home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc759.txt < prev    next >
Text File  |  1994-08-01  |  124KB  |  4,343 lines

  1.  
  2.  
  3. IEN: 113
  4. RFC: 759
  5.                                     
  6.                                     
  7.                                     
  8.                                     
  9.                                     
  10.                                     
  11.                        INTERNET MESSAGE PROTOCOL
  12.                                     
  13.                                     
  14.                                     
  15.                            Jonathan B. Postel
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.                               August 1980
  34.                                     
  35.                                     
  36.                                     
  37.                                     
  38.                      Information Sciences Institute
  39.                    University of Southern California
  40.                            4676 Admiralty Way
  41.                    Marina del Rey, California  90291
  42.  
  43.                              (213) 822-1511
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. August 1980                                                             
  52.                                                Internet Message Protocol
  53.  
  54.  
  55.  
  56.                            TABLE OF CONTENTS
  57.  
  58.     PREFACE ........................................................ iii
  59.  
  60. 1.  INTRODUCTION ..................................................... 1
  61.  
  62.   1.1.  Motivation ................................................... 1
  63.   1.2.  Scope ........................................................ 1
  64.   1.3.  The Internetwork Environment ................................. 2
  65.   1.4.  Model of Operation ........................................... 2
  66.   1.5.  Interfaces ................................................... 4
  67.  
  68. 2.  FUNCTIONAL DESCRIPTION ........................................... 5
  69.  
  70.   2.1.  Terminology .................................................. 5
  71.   2.2.  Assumptions  ................................................. 5
  72.   2.3.  General Specification ........................................ 6
  73.   2.4.  Mechanisms ................................................... 7
  74.   2.5.  Relation to Other Protocols ................................. 10
  75.  
  76. 3.  DETAILED SPECIFICATION .......................................... 13
  77.  
  78.   3.1.  Overview of Message Structure ............................... 13
  79.   3.2.  Message Structure ........................................... 14
  80.   3.3.  Identification .............................................. 15
  81.   3.4.  Command ..................................................... 15
  82.   3.5.  Document .................................................... 19
  83.   3.6.  Message Objects ............................................. 20
  84.   3.7.  Data Elements ............................................... 27
  85.  
  86. 4.  OTHER ISSUES .................................................... 35
  87.  
  88.   4.1.  Accounting and Billing ...................................... 35
  89.   4.2.  Addressing and Routing ...................................... 36
  90.   4.3.  Encryption .................................................. 37
  91.  
  92. 5.  The MPM:  A Possible Architecture ............................... 39
  93.  
  94.   5.1.  Interfaces .................................................. 39
  95.   5.2.  MPM Organization ............................................ 40
  96.  
  97. 6.  EXAMPLES & SCENARIOS ............................................ 45
  98.  
  99.   Example 1:  Message Format ........................................ 45
  100.   Example 2:  Delivery and Acknowledgment ........................... 47
  101.  
  102.  
  103.  
  104.  
  105.  
  106. Postel                                                          [Page i]
  107.  
  108.  
  109.                                                              August 1980
  110. Internet Message Protocol
  111. Table Of Contents
  112.  
  113.  
  114.  
  115. 7.  SPECIFICATION SUMMARY ........................................... 55
  116.  
  117.   7.1.  Message Fields .............................................. 55
  118.   7.2.  Deliver Message ............................................. 58
  119.   7.3.  Acknowledge Message ......................................... 59
  120.   7.4.  Probe Message ............................................... 61
  121.   7.5.  Response Message ............................................ 62
  122.   7.6.  Cancel Message .............................................. 64
  123.   7.7.  Canceled Message ............................................ 66
  124.   7.8.  Data Element Summary ........................................ 68
  125.  
  126. REFERENCES .......................................................... 69
  127.  
  128.   
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164. [Page ii]                                                         Postel
  165.  
  166.  
  167. August 1980                                                             
  168.                                                Internet Message Protocol
  169.  
  170.  
  171.  
  172.                                 PREFACE
  173.  
  174.  
  175.  
  176. This is the second edition of this specification and should be treated
  177. as a request for comments, advice, and suggestions.  A great deal of
  178. prior work has been done on computer aided message systems and some of
  179. this is listed in the reference section.  This specification was shaped
  180. by many discussions with members of the ARPA research community, and
  181. others interested in the development of computer aided message systems.
  182. This document was prepared as part of the ARPA sponsored Internetwork
  183. Concepts Research Project at ISI, with the assistance of Greg Finn,
  184. Suzanne Sluizer, Alan Katz, Paul Mockapetris, and Linda Sato.
  185.  
  186.                                                               Jon Postel
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222. Postel                                                        [Page iii]
  223.  
  224.  
  225.  
  226.  
  227. IEN: 113                                                       J. Postel
  228. RFC: 759                                                         USC-ISI
  229.                                                              August 1980
  230.  
  231.  
  232.  
  233.  
  234.                        INTERNET MESSAGE PROTOCOL
  235.  
  236.  
  237.  
  238.                             1.  INTRODUCTION
  239.  
  240. This document describes an internetwork message system.  The system is
  241. designed to transmit messages between message processing modules
  242. according to formats and procedures specified in this document.  The
  243. message processing modules are processes in host computers.  Message
  244. processing modules are located in different networks and together
  245. constitute an internetwork message delivery system.
  246.  
  247. This document is intended to provide all the information necessary to
  248. implement a compatible cooperating module of this internetwork message
  249. delivery system.
  250.  
  251. 1.1.  Motivation
  252.  
  253.   As computer supported message processing activities grow on individual
  254.   host computers and in networks of computers, there is a natural desire
  255.   to provide for the interconnection and interworking of such systems.
  256.   This specification describes the formats and procedures of a general
  257.   purpose internetwork message system, which can be used as a standard
  258.   for the interconnection of individual message systems, or as a message
  259.   delivery system in its own right.
  260.  
  261.   This system also provides for the communication of data items beyond
  262.   the scope of contemporary message systems.  Messages can include data
  263.   objects which could represent drawings, or facsimile images, or
  264.   digitized speech.  One can imagine message stations equipped with
  265.   speakers and microphones (or telephone hand sets) where the body of a
  266.   message or a portion of it is recorded digitized speech.  The output
  267.   terminal could include a graphics display, and the message might
  268.   present a drawing on the display, and verbally (via the speaker)
  269.   describe certain features of the drawing.  This specification provides
  270.   for the composition of complex data objects and their encoding in
  271.   machine independent basic data elements.
  272.  
  273. 1.2.  Scope
  274.  
  275.   The Internet Message Protocol is intended to be used for the
  276.   transmission of messages between networks.  It may also be used for
  277.   the local message system of a network or host.  This specification was
  278.  
  279.  
  280.  
  281. Postel                                                          [Page 1]
  282.  
  283.  
  284.                                                              August 1980
  285. Internet Message Protocol
  286. Introduction
  287.  
  288.  
  289.  
  290.   developed in the context of the ARPA work on the interconnection of
  291.   networks, but it is thought that it has a more general scope.
  292.  
  293.   The focus here is on the internal mechanisms to transmit messages,
  294.   rather than the external interface to users.  It is assumed that a
  295.   number of user interface programs will exist.  These will be both new
  296.   programs designed to work with this system and old programs designed
  297.   to work with earlier systems.
  298.  
  299. 1.3.  The Internetwork Environment
  300.  
  301.   The internetwork message environment consists of processes which run
  302.   in hosts which are connected to networks which are interconnected by
  303.   gateways.  Each network consists of many different hosts.  The
  304.   networks are tied together through gateways.  The gateways are
  305.   essentially hosts on two (or more) networks and are not assumed to
  306.   have much storage capacity or to "know" which hosts are on the
  307.   networks to which they are attached [1,2].
  308.  
  309. 1.4.  Model of Operation
  310.  
  311.   This protocol is implemented in a process called a Message Processing
  312.   Module or MPM.  The MPMs exchange messages by establishing full duplex
  313.   communication and sending the messages in a fixed format described in
  314.   this document.  The MPM may also communicate other information by
  315.   means of commands described here.
  316.  
  317.   A message is formed by a user interacting with a User Interface
  318.   Program or UIP.  The user may utilize several commands to create
  319.   various fields of the message and may invoke an editor program to
  320.   correct or format some or all of the message.  Once the user is
  321.   satisfied with the message it is submitted for transmission by placing
  322.   it in a data structure read by the MPM.
  323.  
  324.   The MPM discovers the unprocessed input data (either by a specific
  325.   request or by a general background search), examines it, and, using
  326.   routing tables (or some other method), determines which outgoing link
  327.   to use.  The destination may be another user on the same host, one on
  328.   another host on a network in common with the same host, or a user in
  329.   another network.
  330.  
  331.   In the first case, another user on this host, the MPM places the
  332.   message in a data structure read by the destination user, where that
  333.   user's UIP will look for incoming messages.
  334.  
  335.   In the second case, the user on another host in this network, the MPM
  336.   transmits the message to the MPM on that host.  That MPM then repeats
  337.  
  338.  
  339. [Page 2]                                                          Postel
  340.  
  341.  
  342. August 1980                                                             
  343.                                                Internet Message Protocol
  344.                                                             Introduction
  345.  
  346.  
  347.  
  348.   the routing decision, and discovering the destination is local to it,
  349.   places the message in the data structure shared with the destination
  350.   user.
  351.  
  352.   In the third case, the user on a host in another network, the MPM
  353.   transmits the messages to an MPM in that network if it knows how to
  354.   establish a connection directly to it; otherwise, the MPM transmits
  355.   the message to an MPM that is "closer" to the destination.  An MPM
  356.   might not know of direct connections to MPMs in all other networks,
  357.   but it must be able to select a next MPM to handle the message for
  358.   each possible destination network.
  359.  
  360.   An MPM might know a way to establish direct connections to each of a
  361.   few MPMs in other nearby networks, and send all other messages to a
  362.   particular big brother MPM that has a wider knowledge of the internet
  363.   environment.
  364.  
  365.   An individual network's message system may be quite different from the
  366.   internet message system.  In this case, intranet messages will be
  367.   delivered using the network's own message system.  If a message is
  368.   addressed outside the network, it is given to an MPM which then sends
  369.   it through the appropriate gateways to (or towards) the MPM in the
  370.   destination network.  Eventually, the message gets to an MPM on the
  371.   network of the recipient of the message.  The message is then sent via
  372.   the local message system to that host.
  373.  
  374.   When local message protocols are used, special conversion programs are
  375.   required to transform local messages to internet format when they are
  376.   going out, and to transform internet messages to local format when
  377.   they come into the local environment.  Such transformations
  378.   potentially lead to information loss.  The internet message format
  379.   attempts to provide features to capture all the information any local
  380.   message system might use.  However, a particular local message system
  381.   is unlikely to have features equivalent to all the possible features
  382.   of the internet message system.  Thus, in some cases the
  383.   transformation of an internet message to a local message discards some
  384.   of the information.  For example, if an internet message carrying
  385.   mixed text and speech data in the body is to be delivered in a local
  386.   system which only carries text, the speech data may be replaced by the
  387.   text string "There was some speech here".  Such discarding of
  388.   information is to be avoided when at all possible, and to be deferred
  389.   as long as possible; still, the possibility remains that in some cases
  390.   it is the only reasonable thing to do.
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397. Postel                                                          [Page 3]
  398.  
  399.  
  400.                                                              August 1980
  401. Internet Message Protocol
  402. Introduction
  403.  
  404.  
  405.  
  406. 1.5.  Interfaces
  407.  
  408.   The MPM calls on a reliable communication procedure to communicate
  409.   with other MPMs.  This is a Transport Level protocol such as the
  410.   Transmission Control Protocol (TCP) [3].  The interface to such a
  411.   procedure conventionally provides calls to open and close connections,
  412.   send and receive data on a connection, and some means to signal and be
  413.   notified of special conditions (i.e., interrupts).
  414.  
  415.   The MPM receives input and produces output through data structures
  416.   that are produced and consumed respectively by user interface (or
  417.   other) programs.
  418.  
  419.   
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455. [Page 4]                                                          Postel
  456.  
  457.  
  458. August 1980                                                             
  459.                                                Internet Message Protocol
  460.  
  461.  
  462.  
  463.                        2.  FUNCTIONAL DESCRIPTION
  464.  
  465. This section gives an overview of the Internet Message System and its
  466. environment.
  467.  
  468. 2.1.  Terminology
  469.  
  470.   The messages are routed by a process called the Message Processing
  471.   Module or MPM.  Messages are created and consumed by User Interface
  472.   Programs (UIPs) in conjunction with users.
  473.  
  474.   The basic unit transferred between MPMs is called a message.  A
  475.   message is made up of a transaction identifier (which uniquely
  476.   identifies the message), a command (which contains the necessary
  477.   information for delivery), and document.  The document may have a
  478.   header and a body.
  479.  
  480.   For a personal letter the document body corresponds to the contents of
  481.   the letter; the document header corresponds to the date line,
  482.   greeting, and signature.
  483.  
  484.   For an inter-office memo the document body corresponds to the text;
  485.   the document header corresponds to the header of the memo.
  486.  
  487.   The commands correspond to the information used by the Post Office or
  488.   the mail room to route the letter or memo.  Some of the information in
  489.   the command is supplied by the UIP.
  490.  
  491. 2.2.  Assumptions
  492.  
  493.   The following assumptions are made about the internetwork environment:
  494.  
  495.   In general, it is not known what format intranet addresses will
  496.   assume.  Since no standard addressing scheme would suit all networks,
  497.   it is safe to assume there will be several and that they will change
  498.   with time.  Thus, frequent software modification throughout all
  499.   internet MPMs would be required if such MPMs were to know about the
  500.   formats on many networks.  Therefore, each MPM which handles internet
  501.   messages is required to know only the minimum necessary to deliver
  502.   them.
  503.  
  504.   Each MPM is required to know completely only the addressing format of
  505.   its own network(s).  In addition, the MPM must be able to select an
  506.   output link for each message addressed to another network or host.
  507.   This does not preclude more intelligent behavior on the part of a
  508.   given MPM, but at least this minimum is necessary.  Each network has a
  509.   unique name and numeric address.  Such names and addresses are
  510.  
  511.  
  512.  
  513. Postel                                                          [Page 5]
  514.  
  515.  
  516.                                                              August 1980
  517. Internet Message Protocol
  518. Functional Description
  519.  
  520.  
  521.  
  522.   registered with a naming authority and may be listed in documents such
  523.   as Assigned Numbers [4].
  524.  
  525.   Each MPM will have a unique internet address.  This feature will
  526.   enable every MPM to place a unique "handling-stamp" on a message which
  527.   passes through the MPM enroute to delivery.
  528.  
  529. 2.3.  General Specification
  530.  
  531.   There are several aspects to a distributed service to be specified.
  532.   First, there is the service to be provided; that is, the
  533.   characteristics of the service as seen by its users.  Second, there is
  534.   the service it uses; that is, the characteristics it assumes to be
  535.   provided by some lower level service.  And third, there is the
  536.   protocol used between the modules of the distributed service.
  537.  
  538.        User                                          User       
  539.           \                                          /          
  540.           UIP                                      UIP          
  541.             \                                      /            
  542.          --+----------------------------------------+-- Service 
  543.            |   \                                /   | Interface 
  544.            |  +--------+                +--------+  |           
  545.            |  | Module | <--Protocol--> | Module |  |           
  546.            |  +--------+                +--------+  |           
  547.            |        \                       /       |           
  548.            |        +-----------------------+       |           
  549.            |        | Communication Service |       |           
  550.            |        +-----------------------+       |           
  551.            |                                        |           
  552.            +----------------------------------------+           
  553.  
  554.                             Message Service
  555.  
  556.                                Figure 1.
  557.  
  558.   The User/Message Service Interface
  559.  
  560.     The service the message delivery system provides is to accept
  561.     messages conforming to a specified format, to attempt to deliver
  562.     those messages, and to report on the success or failure of the
  563.     delivery attempt.  This service is provided in the context of an
  564.     interconnected system of networks and may involve relaying a message
  565.     through several intermediate MPMs via different communication
  566.     services.
  567.  
  568.  
  569.  
  570.  
  571. [Page 6]                                                          Postel
  572.  
  573.  
  574. August 1980                                                             
  575.                                                Internet Message Protocol
  576.                                                   Functional Description
  577.  
  578.  
  579.  
  580.   The Message/Communication Service Interface
  581.  
  582.     The message delivery system calls on a communication service to
  583.     transfer information from one MPM to another.  There may be
  584.     different communication services used between different pairs of
  585.     MPMs, though all communication services must meet the service
  586.     characteristics described below.
  587.  
  588.     It is assumed that the communication service provides a reliable
  589.     two-way data stream.  Such a data stream can usually be obtained in
  590.     computer networks from the transport level protocol, for example,
  591.     the Transmission Control Protocol (TCP) [3].  In any case, the
  592.     properties the communication service must provide are:
  593.  
  594.       o  Logical connections for two way simultaneous data flow of
  595.          arbitrary data (i.e., no forbidden codes).  All data sent is
  596.          delivered in order.
  597.  
  598.       o  Simple commands to open and close the connections, and to send
  599.          and receive data on the connections.
  600.  
  601.       o  Controlled flow of data so that data is not transmitted faster
  602.          that the receiver chooses to consume it (on the average).
  603.  
  604.       o  Transmission errors are corrected without user notification or
  605.          involvement of the sender or receiver.  Complete breakdown on
  606.          communication is reported to the sender or receiver.
  607.  
  608.   The Message-Message Protocol
  609.  
  610.     The protocol used between the distributed modules of the message
  611.     delivery system, that is, the MPMs, is a small set of commands which
  612.     convey requests and replies.  These commands are encoded in a highly
  613.     structured and rigidly specified format.
  614.  
  615. 2.4.  Mechanisms
  616.  
  617.   MPMs are processes which use some communication service.  A pair of
  618.   MPMs which can communicate reside in a common interprocess
  619.   communication environment.  An MPM might exist in two (or more)
  620.   interprocess communication environments, and such an MPM might act to
  621.   relay messages between MPMs.  Messages may be held for a time in an
  622.   MPM; the total path required for delivery need not be available
  623.   simultaneously.
  624.  
  625.   From the time a message is accepted from a UIP by an MPM until it is
  626.   delivered to a UIP by an MPM and an acknowledgment is returned to the
  627.  
  628.  
  629. Postel                                                          [Page 7]
  630.  
  631.  
  632.                                                              August 1980
  633. Internet Message Protocol
  634. Functional Description
  635.  
  636.  
  637.  
  638.   originating UIP, the message is considered to be active in the message
  639.   system.
  640.  
  641.      User                                                    User 
  642.        \                                                      /   
  643.        UIP                                                  UIP   
  644.          \                                                  /     
  645.       +---------------------------------------------------------+ 
  646.       |    \                                              /     | 
  647.       |  +-----+                +-----+                +-----+  | 
  648.       |  | MPM | <--Protocol--> | MPM | <--Protocol--> | MPM |  | 
  649.       |  +-----+                +-----+                +-----+  | 
  650.       |     |                    /   \                    |     | 
  651.       |  +-----------------------+   +-----------------------+  | 
  652.       |  |Communication Service A|   |Communication Service B|  | 
  653.       |  +-----------------------+   +-----------------------+  | 
  654.       |                                                         | 
  655.       +---------------------------------------------------------+ 
  656.  
  657.                  Message Service with Internal Relaying
  658.  
  659.                                Figure 2.
  660.  
  661.   It should be clear that there are two roles an MPM can play, an
  662.   end-point MPM or a relay MPM.  Most MPMs will play both roles.  A
  663.   relay MPM acts to relay messages from one communication environment to
  664.   another.  An end-point MPM acts as a source or destination of
  665.   messages.
  666.  
  667.   The transfer of data between UIPs and MPMs is viewed as the exchange
  668.   of data structures which encode messages.  The transfer of data
  669.   between MPMs is also in terms of the transmission of structured data.
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687. [Page 8]                                                          Postel
  688.  
  689.  
  690. August 1980                                                             
  691.                                                Internet Message Protocol
  692.                                                   Functional Description
  693.  
  694.  
  695.  
  696.                     +-----+     DATA       +-----+         
  697.              USER-->| UIP |-->STRUCTURES-->| MPM |-->other 
  698.                     +-----+    +-----+     +-----+    MPMs 
  699.                                |     |                     
  700.                                |  +-----+                  
  701.                                +--|     |                  
  702.                                   |  +-----+               
  703.                                   +--|     |               
  704.                                      |     |               
  705.                                      +-----+               
  706.  
  707.                      +-----+     DATA       +-----+        
  708.              other-->| MPM |-->STRUCTURES-->| UIP |-->USER 
  709.              MPMs    +-----+    +-----+     +-----+        
  710.                                 |     |                    
  711.                                 |  +-----+                 
  712.                                 +--|     |                 
  713.                                    |  +-----+              
  714.                                    +--|     |              
  715.                                       |     |              
  716.                                       +-----+              
  717.  
  718.                               Message Flow
  719.  
  720.                                Figure 3.
  721.  
  722.   In the following, a message will be described as a structured data
  723.   object represented in a particular kind of typed data elements.  This
  724.   is how a message is presented when transmitted between MPMs or
  725.   exchanged between an MPM and a UIP.  Internal to an MPM (or a UIP), a
  726.   message may be represented in any convenient form.
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745. Postel                                                          [Page 9]
  746.  
  747.  
  748.                                                              August 1980
  749. Internet Message Protocol
  750. Functional Description
  751.  
  752.  
  753.  
  754. 2.5.  Relation to Other Protocols
  755.  
  756.   This protocol the benefited from the earlier work on message protocols
  757.   in the ARPA Network [5,6,7,8,9], and the ideas of others about the
  758.   design of computer message systems
  759.   [10,11,12,13,14,15,16,17,18,19,20,21].
  760.  
  761.   Figure 4 illustrates the place of the message protocol in the ARPA
  762.   internet protocol hierarchy:
  763.  
  764.                                     
  765.    +------+ +-----+ +-------+ +-----+     +-----+                   
  766.    |Telnet| | FTP | |Message| |Voice| ... |     | Application Level 
  767.    +------+ +-----+ +-------+ +-----+     +-----+                   
  768.            \   |   /             |           |                      
  769.             +-----+           +-----+     +-----+                   
  770.             | TCP |           | RTP | ... |     | Host Level        
  771.             +-----+           +-----+     +-----+                   
  772.                |                 |           |                      
  773.               +-------------------------------+                     
  774.               |       Internet Protocol       |   Gateway Level     
  775.               +-------------------------------+                     
  776.                               |                                     
  777.                 +---------------------------+                       
  778.                 |   Local Network Protocol  |     Network Level     
  779.                 +---------------------------+                       
  780.                               |                                     
  781.  
  782.  
  783.  
  784.                          Protocol Relationships
  785.  
  786.                                Figure 4.
  787.  
  788.   Note that "local network" means an individual or specific network.
  789.   For example, the ARPANET is a local network.
  790.  
  791.   The message protocol interfaces on one side to user interface programs
  792.   and on the other side to a reliable transport protocol such as TCP.
  793.  
  794.   In this internet message system the MPMs communicate directly using
  795.   the lower level transport protocol.  In the old ARPANET system,
  796.   message transmission was part of the file transfer protocol.
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803. [Page 10]                                                         Postel
  804.  
  805.  
  806. August 1980                                                             
  807.                                                Internet Message Protocol
  808.                                                   Functional Description
  809.  
  810.  
  811.  
  812.                                     
  813.         +------+   +-----+   +-------+                              
  814.         |Telnet|   | FTP |---|Message|            Application Level 
  815.         +------+   +-----+   +-------+                              
  816.               \     /                                               
  817.     +-----+   +-----+                                               
  818.     |Voice|---| NCP |                             Host Level        
  819.     +-----+   +-----+                                               
  820.                  |                                                  
  821.                  |                                                  
  822.                  |                                Gateway Level     
  823.                  |                                                  
  824.                  |                                                  
  825.          +----------------+                                         
  826.          |    ARPA NET    |                       Network Level     
  827.          +----------------+                                         
  828.                                                                     
  829.  
  830.  
  831.  
  832.                          Old ARPANET Protocols
  833.  
  834.                                Figure 5.
  835.  
  836.   Note that in the old ARPANET protocols one can't send messages (or
  837.   communicate in any way) to other networks since it has no gateway
  838.   level or internet protocol [5].
  839.  
  840.   
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861. Postel                                                         [Page 11]
  862.  
  863.  
  864.                                                              August 1980
  865. Internet Message Protocol
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919. [Page 12]                                                         Postel
  920.  
  921.  
  922. August 1980                                                             
  923.                                                Internet Message Protocol
  924.  
  925.  
  926.  
  927.                        3.  DETAILED SPECIFICATION
  928.  
  929. The presentation of the information in this section is difficult since
  930. everything depends on everything, and since this is a linear medium it
  931. has to come in some order.  In this attempt, a brief overview of the
  932. message structure is given, the detail of the message is presented in
  933. terms of data objects, the various data objects are defined, and finally
  934. the representation of the data elements is specified.  Several aspects
  935. of the message structure are based on the NSW Transaction Protocol [22],
  936. and similar (but more general) proposals [23,24].
  937.  
  938. 3.1.  Overview of Message Structure
  939.  
  940.   A message is normally composed of three parts:  the identification,
  941.   the command, and the document.  Each part is in turn composed of data
  942.   objects.
  943.  
  944.   The identification part is composed of a transaction number assigned
  945.   by the originating MPM and the MPM identifier.
  946.  
  947.   The command part is composed of an operation type, an operation code,
  948.   the arguments to the operation, error information, the destination
  949.   mailbox, and a trace.  The trace is a list of the MPMs that have
  950.   handled this message.
  951.  
  952.   The document part is a data structure.  The message delivery system
  953.   does not depend on the contents of the document part.  A standard for
  954.   the document part is defined in reference [25].
  955.  
  956.   The following sections define the representation of a message as a
  957.   structured object composed of other objects.  Objects in turn are
  958.   represented using a set of basic data elements.
  959.  
  960.   The basic data elements are defined in section 3.7.  In summary, these
  961.   are exact forms for representing integers, strings, booleans, et
  962.   cetera.  There are also two elements for building data structures:
  963.   list and property list.  Lists are simple lists of elements, including
  964.   lists.  Property lists are lists of pairs of elements, where the first
  965.   element of each pair names the pair.  That is, a property list is a
  966.   list of <name,value> pairs.  In general, when an object is composed of
  967.   multiple instances of a simpler object it is represented as a list of
  968.   the simpler objects.  When an object is composed of a variety of
  969.   simpler objects it is represented as a property list of the simpler
  970.   objects.  In most uses of the property list representation, the
  971.   presence of <name,value> pairs in addition to those specifically
  972.   required is permitted.
  973.  
  974.  
  975.  
  976.  
  977. Postel                                                         [Page 13]
  978.  
  979.  
  980.                                                              August 1980
  981. Internet Message Protocol
  982. Specification
  983.  
  984.  
  985.  
  986. 3.2.  Message Structure
  987.  
  988.   An internet message is composed of two or three parts.  The first is
  989.   the Identification which identifies the transaction; the second is the
  990.   Command; and the optional third part is the Document.
  991.  
  992.   When shipped between two MPMs, a message will take the form of a
  993.   property list, with the <name,value> pairs in this order.
  994.  
  995.     MESSAGE is:
  996.  
  997.       ( Identification, Command [, Document ] )
  998.  
  999.     It is convenient to batch several messages together, shipping them
  1000.     as a unit from one MPM to another.  Such a group of messages is
  1001.     called a message-bag.
  1002.  
  1003.     A message-bag will be a list of Messages; each Message is of the
  1004.     form described above.
  1005.  
  1006.       MESSAGE-BAG is:
  1007.  
  1008.         ( Message, Message, ... )
  1009.  
  1010.   The Identification
  1011.  
  1012.     This is the transaction identifier.  It is assigned by the
  1013.     originating MPM.  The identification is composed of the MPM
  1014.     identifier, and a transaction number unique in that context for this
  1015.     message.
  1016.  
  1017.   The Command
  1018.  
  1019.     The command is composed of a mailbox, an operation code, the
  1020.     arguments to that operation, some error information, and a trace of
  1021.     the route of this message.  The command is implemented by a property
  1022.     list which contains <name,value> pairs, where the names are used to
  1023.     identify the associated argument values.
  1024.  
  1025.   The Document
  1026.  
  1027.     The document portion of an internet message is optional and when
  1028.     present is a data structure as defined in [25].
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035. [Page 14]                                                         Postel
  1036.  
  1037.  
  1038. August 1980                                                             
  1039.                                                Internet Message Protocol
  1040.                                                            Specification
  1041.  
  1042.  
  1043.  
  1044. 3.3.  Identification
  1045.  
  1046.   Each message must have a unique identifier while it exists in the
  1047.   message delivery system.  This is provided by the combination of the
  1048.   unique identifier of the MPM and a unique transaction number chosen
  1049.   for the message by this MPM.
  1050.  
  1051.     IDENTIFICATION is:
  1052.  
  1053.       ( mpm-identifier, transaction-number )
  1054.  
  1055.   The mpm-identifier is based on the host address of the computer in
  1056.   which the MPM resides.  If there is more than one MPM in a host the
  1057.   mpm-identifier must be extended to distinguish between the co-resident
  1058.   MPMs.
  1059.  
  1060. 3.4.  Command
  1061.  
  1062.   This section describes the commands MPMs use to communicate between
  1063.   themselves.  The commands come in pairs, with each request having a
  1064.   corresponding reply.
  1065.  
  1066.     COMMAND is:
  1067.  
  1068.       ( mailbox, operation, [arguments,]
  1069.                                     [error-class, error-string,] trace )
  1070.  
  1071.   The mailbox is the "To" specification of the message.  Mailbox is a
  1072.   property list of general information, some of which is the essential
  1073.   information for delivery, and some of which could be extra information
  1074.   which may be helpful for delivery.  Mailbox is different from address
  1075.   in that address is a very specific property list without extra
  1076.   information.  The mailbox includes a specification of the user,  when
  1077.   a command is addressed to the MPM itself (rather than a user it
  1078.   serves) the special user name "*MPM*" is specified.
  1079.  
  1080.   The operation is the name of the operation or procedure to be
  1081.   performed.
  1082.  
  1083.   The arguments to the operation vary from operation to operation.
  1084.  
  1085.   The error information is composed of a error class code and a
  1086.   character string, and indicates what, if any, error occurred.  The
  1087.   error information is normally present only in replies, and not present
  1088.   in requests.
  1089.  
  1090.  
  1091.  
  1092.  
  1093. Postel                                                         [Page 15]
  1094.  
  1095.  
  1096.                                                              August 1980
  1097. Internet Message Protocol
  1098. Specification
  1099.  
  1100.  
  1101.  
  1102.   The trace is a list of the MPMs that have handled the message.  Each
  1103.   MPM must add its handling-stamp to the list.
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151. [Page 16]                                                         Postel
  1152.  
  1153.  
  1154. August 1980                                                             
  1155.                                                Internet Message Protocol
  1156.                                                            Specification
  1157.  
  1158.  
  1159.  
  1160.   3.4.1.  Command:  DELIVER
  1161.  
  1162.     function:  Sends a document to a mailbox.
  1163.  
  1164.     reply:  The reply is ACKNOWLEDGE.
  1165.  
  1166.     arguments:
  1167.  
  1168.       type-of-service:  one or more of the following:
  1169.  
  1170.         "REGULAR"  regular delivery
  1171.         "FORWARD"  message forwarding
  1172.         "GENDEL"   general delivery
  1173.         "PRIORITY" priority delivery
  1174.  
  1175.   3.4.2.  Command:  ACKNOWLEDGE
  1176.  
  1177.     function:  Reply to DELIVER.
  1178.  
  1179.     arguments:
  1180.  
  1181.       reference:  the identifier of the originating message.
  1182.  
  1183.       address:
  1184.  
  1185.         The address is the final mailbox the message was delivered to.
  1186.         This would be different from the original mailbox if the message
  1187.         was forwarded, and is limited to the essential information
  1188.         needed for delivery.
  1189.  
  1190.       type-of-service:  one of the following:
  1191.  
  1192.         "GENDEL"    message was accepted for general delivery
  1193.         "REGULAR"   message was accepted for normal delivery
  1194.         "PRIORITY"  message was accepted for priority delivery
  1195.  
  1196.       error-class:
  1197.       error-string:
  1198.  
  1199.         If the document was delivered successfully, the error
  1200.         information has class 0 and string "ok".  Otherwise, the error
  1201.         information has a non-zero class and the string would be one of
  1202.         "no such user", "no such host", "no such network", "address
  1203.         ambiguous", or a similar response.
  1204.  
  1205.       trail:   the trace from the DELIVER command.
  1206.  
  1207.  
  1208.  
  1209. Postel                                                         [Page 17]
  1210.  
  1211.  
  1212.                                                              August 1980
  1213. Internet Message Protocol
  1214. Specification
  1215.  
  1216.  
  1217.  
  1218.   3.4.3.  Command:  PROBE
  1219.  
  1220.     function:  Finds out if specified mailbox (specified in mailbox of
  1221.     the command) exists at a host.
  1222.  
  1223.     reply:  The reply is RESPONSE.
  1224.  
  1225.     arguments:  none.
  1226.  
  1227.   3.4.4.  Command:  RESPONSE
  1228.  
  1229.     function:  Reply to PROBE.
  1230.  
  1231.     arguments:
  1232.  
  1233.       reference:  the identification of the originating PROBE.
  1234.  
  1235.       address:  a specific address.
  1236.  
  1237.       error-class:
  1238.       error-string:
  1239.  
  1240.         If the mailbox was found the error class is 0 and the error
  1241.         string is "OK".  If the mailbox has moved and a forwarding
  1242.         address in known the error class is 1 and the error string is
  1243.         "Mailbox moved, see address".  Otherwise the error class is
  1244.         greater than 1 and the error string may be one of the following:
  1245.         "Mailbox doesn't exist", "Mailbox full", "Mailbox has moved, try
  1246.         the new location indicated in the address".
  1247.  
  1248.       trail:  the trace which came from the originating PROBE.
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267. [Page 18]                                                         Postel
  1268.  
  1269.  
  1270. August 1980                                                             
  1271.                                                Internet Message Protocol
  1272.                                                            Specification
  1273.  
  1274.  
  1275.  
  1276.   3.4.5.  Command:  CANCEL
  1277.  
  1278.     function:  Abort request for specified transaction.
  1279.  
  1280.     reply:  The reply is CANCELED.
  1281.  
  1282.     arguments:
  1283.  
  1284.       reference:  identification of transaction to be canceled.
  1285.  
  1286.   3.4.6.  Command:  CANCELED
  1287.  
  1288.     function:  Reply to CANCEL.
  1289.  
  1290.     arguments:
  1291.  
  1292.       reference:  identification of canceled transaction.
  1293.  
  1294.       error-class:
  1295.       error-string:
  1296.  
  1297.         If the command was canceled the error class is 0 and the error
  1298.         string is "OK".  Otherwise the error class is positive and the
  1299.         error string may be one of the following: "No such transaction",
  1300.         or any error for an unreachable mailbox.
  1301.  
  1302.       trail:  the trace of the CANCEL command.
  1303.  
  1304.   To summarize again, a command generally consists of a property list of
  1305.   the following objects:
  1306.  
  1307.     name            value
  1308.     ----            -----
  1309.     mailbox         property list of address information
  1310.     operation       name of operation
  1311.     arguments       ---
  1312.     error-class     numeric class of the error
  1313.     error-string    text description of the error
  1314.     trace           list ( handling-stamp, ... )
  1315.  
  1316. 3.5.  Document
  1317.  
  1318.   The actual document follows the command.  The message delivery system
  1319.   does not depend on the document, examine it, or use it in any way.
  1320.   The standard for the contents of the document is reference [25].  The
  1321.   document must be the last <name,value> pair in the message property
  1322.   list.
  1323.  
  1324.  
  1325. Postel                                                         [Page 19]
  1326.  
  1327.  
  1328.                                                              August 1980
  1329. Internet Message Protocol
  1330. Specification
  1331.  
  1332.  
  1333.  
  1334. 3.6.  Message Objects
  1335.  
  1336.   In the composition of messages, we use a set of objects such as
  1337.   mailbox or date.  These objects are encoded in basic data elements.
  1338.   Some objects are simple things like integers or character strings,
  1339.   other objects are more complex things built up of lists or property
  1340.   lists.
  1341.  
  1342.   The following is a list of the objects used in messages.  The object
  1343.   descriptions are in alphabetical order.
  1344.  
  1345.   Action
  1346.  
  1347.     The type of handling action taken by the MPM when processing a
  1348.     message.  One of ORIGIN, RELAY, FORWARD, or DESTINATION.
  1349.  
  1350.   Address
  1351.  
  1352.     Address is intended to contain the minimum information necessary to
  1353.     deliver a message, and no more (compare with mailbox).
  1354.  
  1355.       An address is a property list.  An address contains the following
  1356.       <name,value> pairs:
  1357.  
  1358.         name    description
  1359.         ----    -----------
  1360.         NET     network name
  1361.         HOST    host name
  1362.         USER    user name
  1363.  
  1364.       or:
  1365.  
  1366.         name    description
  1367.         ----    -----------
  1368.         MPM     mpm-identifier
  1369.         USER    user name
  1370.  
  1371.   Answer
  1372.  
  1373.     A yes (true) or no (false) answer to a question.
  1374.  
  1375.   Arguments
  1376.  
  1377.     Many operations require arguments, which differ from command to
  1378.     command.  This "object" is a place holder for the actual arguments
  1379.     when commands are described in a general way.
  1380.  
  1381.  
  1382.  
  1383. [Page 20]                                                         Postel
  1384.  
  1385.  
  1386. August 1980                                                             
  1387.                                                Internet Message Protocol
  1388.                                                            Specification
  1389.  
  1390.  
  1391.  
  1392.   City
  1393.  
  1394.     The character string name of a city.
  1395.  
  1396.   Command
  1397.  
  1398.     (mailbox, operation [ ,arguments ]
  1399.                                   [ ,error-class, error-string ], trace)
  1400.  
  1401.   Country
  1402.  
  1403.     The character string name of a country.
  1404.  
  1405.   Date
  1406.  
  1407.     The date and time are represented according to the International
  1408.     Standards Organization (ISO) recommendations [26,27,28].  Taken
  1409.     together the ISO recommendations 2014, 3307, and 4031 result in the
  1410.     following representation of the date and time:
  1411.  
  1412.       yyyy-mm-dd-hh:mm:ss,fff+hh:mm
  1413.  
  1414.     Where yyyy is the four-digit year, mm is the two-digit month, dd is
  1415.     the two-digit day, hh is the two-digit hour in 24 hour time, mm is
  1416.     the two-digit minute, ss is the two-digit second, and fff is the
  1417.     decimal fraction of the second.  To this basic date and time is
  1418.     appended the offset from Greenwich as plus or minus hh hours and mm
  1419.     minutes.
  1420.  
  1421.     The time is local time and the offset is the difference between
  1422.     local time and Coordinated Universal Time (UTC).  To convert from
  1423.     local time to UTC algebraically subtract the offset from the local
  1424.     time.
  1425.  
  1426.     For example, when the time in
  1427.               Los Angeles is  14:25:00-08:00
  1428.               the UTC is      22:25:00
  1429.  
  1430.     or when the time in
  1431.               Paris is        11:43:00+01:00
  1432.               the UTC is      10:43:00
  1433.  
  1434.   Document
  1435.  
  1436.     The document is the user's composition and is not used by the
  1437.     message delivery system in any way.
  1438.  
  1439.  
  1440.  
  1441. Postel                                                         [Page 21]
  1442.  
  1443.  
  1444.                                                              August 1980
  1445. Internet Message Protocol
  1446. Specification
  1447.  
  1448.  
  1449.  
  1450.   Error-Class
  1451.  
  1452.     A numeric code for the class of the error.  The error classes are
  1453.     coded as follows:
  1454.  
  1455.       = 0: indicates success, no error.
  1456.         This is the normal case.
  1457.       = 1: failure, address changed.
  1458.         This error is used when forwarding is possible, but not allowed
  1459.         by the type of service specified.
  1460.       = 2: failure, resources unavailable.
  1461.         These errors are temporary and the command they respond to may
  1462.         work if attempted at a later time.
  1463.       = 3: failure, user error.
  1464.         For example, unknown operation, or bad arguments.
  1465.       = 4: failure, MPM error.  Recoverable.
  1466.         These errors are temporary and the command they respond to may
  1467.         work if attempted at a later time.
  1468.       = 5: failure, MPM error.  Permanent.
  1469.         These errors are permanent, there is no point in trying the same
  1470.         command again.
  1471.       = 6: Aborted as requested by user.
  1472.         The response to a successfully canceled command.
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499. [Page 22]                                                         Postel
  1500.  
  1501.  
  1502. August 1980                                                             
  1503.                                                Internet Message Protocol
  1504.                                                            Specification
  1505.  
  1506.  
  1507.  
  1508.   Error-String
  1509.  
  1510.     This is a character string describing the error.  Possible errors:
  1511.  
  1512.               error-string                  error-class
  1513.  
  1514.       No errors                                  0
  1515.       Ok                                         0
  1516.       Mailbox Moved, see address                 1
  1517.       Mailbox Full, try again later              2
  1518.       Syntax error, operation unrecognized       3
  1519.       Syntax error, in arguments                 3
  1520.       No Such User                               3
  1521.       No Such Host                               3
  1522.       No Such Network                            3
  1523.       No Such Transaction                        3
  1524.       Mailbox Does Not Exist                     3
  1525.       Ambiguous Address                          3
  1526.       Server error, try again later              4
  1527.       No service available                       5
  1528.       Command not implemented                    5
  1529.       Aborted as requested by user               6
  1530.  
  1531.   Handling-Stamp
  1532.  
  1533.     The handling-stamp indicates the MPM, the date (including the time)
  1534.     that a message was processed by an MPM, and the type of handling
  1535.     action taken.
  1536.  
  1537.     ( mpm-identifier, date, action )
  1538.  
  1539.   Host
  1540.  
  1541.     The character string name of a host.
  1542.  
  1543.   Identification
  1544.  
  1545.     This is the transaction identifier associated with a particular
  1546.     message.  It is the transaction number, and the MPM identifier of
  1547.     the originating MPM.
  1548.  
  1549.     ( mpm-identifier, transaction-number )
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557. Postel                                                         [Page 23]
  1558.  
  1559.  
  1560.                                                              August 1980
  1561. Internet Message Protocol
  1562. Specification
  1563.  
  1564.  
  1565.  
  1566.   Internet Address
  1567.  
  1568.     This identifies a host in the ARPA internetwork environment.  When
  1569.     used as a part of identification, it identifies the originating host
  1570.     of a message.  The internet address is a 32 bit number, the higher
  1571.     order 8 bits identify the network, and the lower order 24 bits
  1572.     identify the host on that network [2].  For use in the MPMs the
  1573.     internet address is divided into eight bit fields and the value of
  1574.     each field is represented in decimal digits.  For example, the
  1575.     ARPANET address of ISIE is 167837748 and is represented as
  1576.     10,1,0,52.  Further, this representation may be extended to include
  1577.     an address within a host, such as the TCP port of the MPM, for
  1578.     example, 10,1,0,52,0,45.
  1579.  
  1580.   Mailbox
  1581.  
  1582.     This is the destination address of a user of the internetwork mail
  1583.     system.  Mailbox contains information such as network, host,
  1584.     location, and local user indentifier of the recipient of the
  1585.     message.  Some information contained in mailbox may not be necessary
  1586.     for delivery.
  1587.  
  1588.     As an example, when one sends a message to someone for the first
  1589.     time, he may include many items which are not necessary simply to
  1590.     insure delivery.  However, once he gets a reply to this message, the
  1591.     reply will contain an Address (as opposed to Mailbox) which may be
  1592.     used from then on.
  1593.  
  1594.       A mailbox is a property list.  A mailbox might contain the
  1595.       following <name,value> pairs:
  1596.  
  1597.         name    description
  1598.         ----    -----------
  1599.         MPM     mpm-identifier
  1600.         NET     network name
  1601.         HOST    host name
  1602.         PORT    address of MPM within the host
  1603.         USER    user name
  1604.         ORG     organization name
  1605.         CITY    city
  1606.         STATE   state
  1607.         COUNTRY country
  1608.         ZIP     zip code
  1609.         PHONE   phone number
  1610.  
  1611.     The minimum mail box is an Address.
  1612.  
  1613.  
  1614.  
  1615. [Page 24]                                                         Postel
  1616.  
  1617.  
  1618. August 1980                                                             
  1619.                                                Internet Message Protocol
  1620.                                                            Specification
  1621.  
  1622.  
  1623.  
  1624.   MPM-Identifier
  1625.  
  1626.     The internetwork address of the MPM.  This may be the ARPA Internet
  1627.     Address or an X.121 Public Data Network Address [29].  The
  1628.     mpm-identifier is a property list which has one <name,value> pair.
  1629.     This unusual structure is used so that it will be easy to determine
  1630.     the type of address used.
  1631.  
  1632.   Network
  1633.  
  1634.     This character string name of a network.
  1635.  
  1636.   Operation
  1637.  
  1638.     This names the operation or procedure to be performed.  It is a
  1639.     character string name.
  1640.  
  1641.   Organization
  1642.  
  1643.     This character string name of a organization.
  1644.  
  1645.   Phone
  1646.  
  1647.     This character string name representation of a phone number. For
  1648.     example the phone number of ISI is 1 (international region) + 213
  1649.     (area code) + 822 (central office) + 1511 (station number) =
  1650.     12138221511.
  1651.  
  1652.   Port
  1653.  
  1654.     This names the port or subaddress within a host of the MPM.  The
  1655.     default port for the MPM is 45 (55 octal) [4].
  1656.  
  1657.   Reference
  1658.  
  1659.     The reference is an identification from an earlier message.
  1660.  
  1661.   State
  1662.  
  1663.     The character string name of a state.
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673. Postel                                                         [Page 25]
  1674.  
  1675.  
  1676.                                                              August 1980
  1677. Internet Message Protocol
  1678. Specification
  1679.  
  1680.  
  1681.  
  1682.   Trace
  1683.  
  1684.     Each MPM that handles the message must add its handling-stamp to
  1685.     this list.  This will allow detection of messages being sent in a
  1686.     loop within the internet mail system, and aid in fault isolation.
  1687.  
  1688.   Trail
  1689.  
  1690.     When a message is sent through the internetwork environment, it
  1691.     acquires this trace, a list of MPMs that have handled the message.
  1692.     This list is then carried as the trail in a reply or acknowledgment
  1693.     of that message.  Requests and replies always have a trace and each
  1694.     MPM adds its handling-stamp to this trace.  Replies, in addition,
  1695.     have a trail which is the complete trace of the original message.
  1696.  
  1697.   Transaction Number
  1698.  
  1699.     This is a number which is uniquely associated with this transaction
  1700.     by the originating MPM.  It identifies the transaction.  (A
  1701.     transaction is a message and acknowledgment.)  A transaction number
  1702.     must be unique during the time which the message (a request or
  1703.     reply) containing it could be active in the network.
  1704.  
  1705.   Type-of-Service
  1706.  
  1707.     A service parameter for the delivery of a message, for instance a
  1708.     message could be delivered (REGULAR), forwarded (FORWARD), turned
  1709.     over to general delivery (GENDEL) (i.e., allow a person to decide
  1710.     how to further attempt to deliver the message), or require priority
  1711.     handling (PRIORITY).
  1712.  
  1713.   User
  1714.  
  1715.     The character string name of a user.
  1716.  
  1717.   X121 Address
  1718.  
  1719.     This identifies a host in the Public Data Network environment.  When
  1720.     used as a part of identifier, it identifies the originating host of
  1721.     a message.  The X121 address is a sequence of up to 14 digits [29].
  1722.     For use in the MPMs the X121 address is represented in decimal
  1723.     digits.
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731. [Page 26]                                                         Postel
  1732.  
  1733.  
  1734. August 1980                                                             
  1735.                                                Internet Message Protocol
  1736.                                                            Specification
  1737.  
  1738.  
  1739.  
  1740.   Zip Code
  1741.  
  1742.     The character string representation of a postal zip code.  The zip
  1743.     code of ISI is 90291.
  1744.  
  1745. 3.7.  Data Elements
  1746.  
  1747.   The data elements defined here are similar to the data structure and
  1748.   encoding used in NSW [30].
  1749.  
  1750.   Each of the diagrams which follow represent a sequence of octets.
  1751.   Field boundaries are denoted by the "|" character, octet boundaries by
  1752.   the "+" character.  Each element begins with a one-octet code.  The
  1753.   order of the information in each element is left-to-right.  In fields
  1754.   with numeric values the high-order (or most significant) bit is the
  1755.   left-most bit.  For transmission purposes, the leftmost octet is
  1756.   transmitted first.  Cohen has described some of the difficulties in
  1757.   mapping memory order to transmission order [31].
  1758.  
  1759.   
  1760.   Code  Type          Representation
  1761.   ----  ----          --------------
  1762.  
  1763.   
  1764.                       +------+
  1765.     0  No Operation   |  0   |
  1766.                       +------+
  1767.  
  1768.   
  1769.                       +------+------+------+------+------
  1770.     1  Padding        |  1   |     octet count    | Data ...
  1771.                       +------+------+------+------+------
  1772.  
  1773.   
  1774.                       +------+------+
  1775.     2  Boolean        |  2   | 1/0  |
  1776.                       +------+------+
  1777.  
  1778.   
  1779.                       +------+------+------+
  1780.     3  Index          |  3   |     Data    |
  1781.                       +------+------+------+
  1782.  
  1783.   
  1784.                       +------+------+------+------+------+
  1785.     4  Integer        |  4   |            Data           |
  1786.                       +------+------+------+------+------+
  1787.  
  1788.  
  1789. Postel                                                         [Page 27]
  1790.  
  1791.  
  1792.                                                              August 1980
  1793. Internet Message Protocol
  1794. Specification
  1795.  
  1796.  
  1797.  
  1798.   
  1799.        Extended       +------+------+------+------+------
  1800.     5  Precision      |  5   |    octet count     | Data ...
  1801.        Integer        +------+------+------+------+------
  1802.  
  1803.   
  1804.                       +------+------+------+------+------
  1805.     6  Bit String     |  6   |      bit count     | Data ...
  1806.                       +------+------+------+------+------
  1807.  
  1808.   
  1809.                       +------+------+------
  1810.     7  Name String    |  7   | count|  Data ...
  1811.                       +------+------+------
  1812.  
  1813.   
  1814.                       +------+------+------+------+------
  1815.     8  Text String    |  8   |     octet count    |  Data ...
  1816.                       +------+------+------+------+------
  1817.  
  1818.   
  1819.                       +------+------+------+------+-----
  1820.     9  List           |  9   |     octet count    | Data ...
  1821.                       +------+------+------+------+-----
  1822.  
  1823.   
  1824.                       +------+------+------+------+------
  1825.     10 Proplist       |  10  |     octet count    | Data ...
  1826.                       +------+------+------+------+------
  1827.  
  1828.   
  1829.                       +------+
  1830.     11 End of List    |  11  |
  1831.                       +------+
  1832.  
  1833.   Element code 0 (NOP) is an empty data element used for padding when it
  1834.   is necessary.  It is ignored.
  1835.  
  1836.   Element code 1 (PAD) is used to transmit large amounts of data with a
  1837.   message for test or padding purposes.  The type-octet is followed by a
  1838.   three-octet count of the number of octets to follow.  No action is
  1839.   taken with this data but the count of dummy octets must be correct to
  1840.   indicate the next element code.
  1841.  
  1842.   Element code 2 (BOOLEAN) is a boolean data element.  The octet
  1843.   following the type-octet has the value 1 for True and 0 for False.
  1844.  
  1845.  
  1846.  
  1847. [Page 28]                                                         Postel
  1848.  
  1849.  
  1850. August 1980                                                             
  1851.                                                Internet Message Protocol
  1852.                                                            Specification
  1853.  
  1854.  
  1855.  
  1856.   Element code 3 (INDEX) is a 16-bit unsigned integer datum.  Element
  1857.   code 3 occupies only 3 octets.
  1858.  
  1859.   Element code 4 (INTEGER) is a signed 32-bit integer datum.  This will
  1860.   always occupy five octets.  Representation is two's complement.
  1861.  
  1862.   Element code 5 (EPI) is an extended precision integer.  The type octet
  1863.   is followed by a three-octet count of the number of data octets to
  1864.   follow.  Representation is two's complement.
  1865.  
  1866.   Element code 6 (BITSTR) is a bit string element for binary data.  The
  1867.   bit string is padded on the right with zeros to fill out the last
  1868.   octet if the bit string does not end on an octet boundary.  This data
  1869.   type must have the bit-count in the three-octet count field instead of
  1870.   the number of octets.
  1871.  
  1872.   Element code 7 (NAME) is used for the representation of character
  1873.   string names (or other short strings).  The type octet is followed by
  1874.   a one-octet count of the number of characters (one per octet) to
  1875.   follow.  Seven bit ASCII characters are used, right justified in the
  1876.   octet.  The high order bit in the octet is zero.
  1877.  
  1878.   Element code 8 (TEXT) is used for the representation of text.  The
  1879.   type octet is followed by a three-octet count of the number of
  1880.   characters (one per octet) to follow.  Seven bit ASCII characters are
  1881.   used, right justified in the octet.  The high order bit in the octet
  1882.   is zero.
  1883.  
  1884.   Element code 9 (LIST) can be used to create structures composed of
  1885.   other elements.  The three-octet octet count specifies the number of
  1886.   octets in the whole list (i.e., the number of octets following this
  1887.   count field to the end of the list, not including the ENDLIST octet).
  1888.   The two-octet item count contains the number of elements which follow.
  1889.   Any element may be used including list itself.
  1890.  
  1891.     
  1892.     +------+------+------+------+------+------+
  1893.     |   9  |     octet count    |  item count |
  1894.     +------+------+------+------+------+------+
  1895.                                      +------+------/---+
  1896.                           repeated   |      element    |
  1897.                                      +------+------/---+
  1898.                                                      +-------+
  1899.                                                      |ENDLIST|
  1900.                                                      +-------+
  1901.  
  1902.   In some situations it may not be possible to know the length of a list
  1903.  
  1904.  
  1905. Postel                                                         [Page 29]
  1906.  
  1907.  
  1908.                                                              August 1980
  1909. Internet Message Protocol
  1910. Specification
  1911.  
  1912.  
  1913.  
  1914.   until the head of it has been transmitted.  To allow for this a
  1915.   special ENDLIST element is defined.  A list of undetermined length is
  1916.   transmitted with the octet count cleared to zero, and the item count
  1917.   cleared to zero.  A null or empty List, one with no elements, has an
  1918.   octet count of two (2) and an item count of zero (0).  The ENDLIST
  1919.   element always follows a LIST, even when the length is determined.
  1920.  
  1921.   Element code 10 (PROPLIST) is the Property List element.  It is a
  1922.   special case of the list element, in which the elements are in pairs
  1923.   and the first element of each pair is a name.  It has the following
  1924.   form:
  1925.  
  1926.     
  1927.     +------+------+------+------+------+
  1928.     |  10  |     octet count    | pair |
  1929.     +------+------+------+------+------+
  1930.                          +------+------/---+------+------/---+
  1931.               repeated   | name element    | value element   |
  1932.                          +------+------/---+------+------/---+
  1933.                                                            +-------+
  1934.                                                            |ENDLIST|
  1935.                                                            +-------+
  1936.  
  1937.   The Property List structure consists of a set of unordered
  1938.   <name,value> pairs.  The pairs are composed of a name which must be a
  1939.   NAME element and a value which may be any kind of element.  Following
  1940.   the type code is a three-octet octet count of the following octets.
  1941.   Following the octet count is a one-octet pair count of the number of
  1942.   <name,value> pairs in the property list.
  1943.  
  1944.   The name of a <name,value> pair is to be unique within the property
  1945.   list, that is, there shall be at most one occurrence of any particular
  1946.   name in one property list.
  1947.  
  1948.   In some situations it may not be possible to know the length of a
  1949.   property list until the head of it has been transmitted.  To allow for
  1950.   this the special ENDLIST element is defined.  A property list of
  1951.   undetermined length is transmitted with the octet count cleared to
  1952.   zero, and the pair count cleared to zero.  A null or empty property
  1953.   list, one with no elements, has an octet count of one (1) and an pair
  1954.   count of zero (0).  The ENDLIST element always follows a property
  1955.   list, even when the length is determined.
  1956.  
  1957.   Element code 11 (ENDLIST) is the end of list element.  It marks the
  1958.   end of the corresponding list or property list.
  1959.  
  1960.  
  1961.  
  1962.  
  1963. [Page 30]                                                         Postel
  1964.  
  1965.  
  1966. August 1980                                                             
  1967.                                                Internet Message Protocol
  1968.                                                            Specification
  1969.  
  1970.  
  1971.  
  1972.   Structure Sharing
  1973.  
  1974.     When messages are batched in message-bags for transmission, it may
  1975.     often be the case that the same document will be sent to more than
  1976.     one recipient.  Since the document portion can usually be expected
  1977.     to be the major part of the message, much repeated data would be
  1978.     sent if a copy of the document for each recipient were to be shipped
  1979.     in the message-bag.
  1980.  
  1981.     To avoid this redundancy, messages may be assembled in the
  1982.     message-bag so that actual data appears on its first occurrence and
  1983.     only references to it appear in later occurrences.  When data is
  1984.     shared, the first occurrence of the data will be tagged, and later
  1985.     locations where the data should appear will only reference the
  1986.     earlier tagged location.  All references to copied data point to
  1987.     earlier locations in the message-bag.  The data to be retrieved is
  1988.     indicated by the tag.
  1989.  
  1990.     This is a very general sharing mechanism.  PLEASE NOTE THAT THE MPM
  1991.     WILL NOT SUPPORT THE FULL USE OF THIS MECHANISM.  THE MPM WILL ONLY
  1992.     SUPPORT SHARING OF WHOLE DOCUMENTS.  No other level of sharing will
  1993.     be supported by the MPMs.
  1994.  
  1995.     This sharing mechanism may be used within a document as long as all
  1996.     references refer to tags within the same document.
  1997.  
  1998.     Sharing is implemented by placing a share-tag on the first
  1999.     occurrence of the data to be shared, and placing a share-reference
  2000.     at the locations where copies of that data should occur.
  2001.  
  2002.     
  2003.                            +------+------+------+
  2004.       12 Share Tag         |  12  | share-index |
  2005.                            +------+------+------+
  2006.  
  2007.     
  2008.                            +------+------+------+
  2009.       13 Share Reference   |  13  | share-index |
  2010.                            +------+------+------+
  2011.  
  2012.     Element code 12 (S-TAG) is a share tag element.  The two octets
  2013.     following the type-octet specify the shared data identification code
  2014.     for the following data element.  Note that s-tag is not a DATA
  2015.     element, in the sense that data elements encode higher level
  2016.     objects.
  2017.  
  2018.     Element code 13 (S-REF) is a share reference element.  The two
  2019.  
  2020.  
  2021. Postel                                                         [Page 31]
  2022.  
  2023.  
  2024.                                                              August 1980
  2025. Internet Message Protocol
  2026. Specification
  2027.  
  2028.  
  2029.  
  2030.     octets following the type-octet specify the referenced shared data
  2031.     identification code.
  2032.  
  2033.     An example of using this mechanism is
  2034.  
  2035.       ( ( <a>, <b> ) ( <c>, <b> ) )
  2036.  
  2037.     could be coded as follows to share <b>
  2038.  
  2039.       ( ( <a>, <s-tag-1><b> ) ( <c>, <s-ref-1> ) )
  2040.  
  2041.     To facilitate working with structures which may contain shared data,
  2042.     the two high-order bits of the list and property list element codes
  2043.     are reserved for indicating if the structure contains data to be
  2044.     shared or contains a reference to shared data.  That is, if the
  2045.     high-order bit of the list or property list element code octet is
  2046.     set to one then the property list contains a share-reference to
  2047.     shared data.  Or, if the second high-order bit is set to one the
  2048.     structure contains a share-tag for data to be shared.
  2049.  
  2050.     The example above is now repeated in detail showing the use of the
  2051.     high-order bits.
  2052.  
  2053.     
  2054.     +------+------+------+------+------+------+------+------+
  2055.     |11 - 9|01 - 9|  <a> |  12  |   0  |   1  |  <b> |  11  |
  2056.     +------+------+------+------+------+------+------+------+
  2057.                       +------+------+------+------+------+------+------+
  2058.                       |10 - 9|  <c> |  13  |   0  |   1  |  11  |  11  |
  2059.                       +------+------+------+------+------+------+------+
  2060.  
  2061.     It is not considered an error for an element to be tagged but not
  2062.     referenced.
  2063.  
  2064.     A substructure with internal sharing may be created.  If such a
  2065.     substructure is closed with respect to sharing -- that is, all
  2066.     references to its tagged elements are within the substructure --
  2067.     then there is no need for the knowledge of the sharing to propagate
  2068.     up the hierarchy of lists.  For example, if the substructure is:
  2069.  
  2070.       00-LIST ( a b c b )
  2071.  
  2072.     which with sharing is:
  2073.  
  2074.       11-LIST ( a T1:b c R1 )
  2075.  
  2076.     When this substructure is included in a large structure the high
  2077.  
  2078.  
  2079. [Page 32]                                                         Postel
  2080.  
  2081.  
  2082. August 1980                                                             
  2083.                                                Internet Message Protocol
  2084.                                                            Specification
  2085.  
  2086.  
  2087.  
  2088.     order bits can be reset since the substructure is closed with
  2089.     respect to sharing.  For example:
  2090.  
  2091.       00-LIST ( x 11-LIST ( a T1:b c R1 ) y )
  2092.  
  2093.     Note:  While sharing adds transmission and memory efficiency, it is
  2094.     costly in processing to separate shared elements.  This is the main
  2095.     reason for restricting the sharing supported by the MPM.  At some
  2096.     later time these restrictions may be eased.
  2097.  
  2098.     It is possible to create loops, "strange loops" and "tangled
  2099.     hierarchies" using this mechanism [32].  The MPM will not check for
  2100.     such improper structures within documents, and will not deliver
  2101.     messages involved in such structures between documents.
  2102.  
  2103.     If an encryption scheme is used to ensure the privacy of
  2104.     communication it is unlikely that any parts of the message can be
  2105.     shared.  This is due to the fact that in most case the encryption
  2106.     keys will be specific between two individuals.  There may be a few
  2107.     cases where encrypted data may be shared.  For example, all the
  2108.     members of a committee may use a common key when acting on committee
  2109.     business, or in a public key scheme a document may be "signed" using
  2110.     the private key of the sender and inspected by anyone using the
  2111.     public key of the sender.
  2112.  
  2113.     
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137. Postel                                                         [Page 33]
  2138.  
  2139.  
  2140.                                                              August 1980
  2141. Internet Message Protocol
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195. [Page 34]                                                         Postel
  2196.  
  2197.  
  2198. August 1980                                                             
  2199.                                                Internet Message Protocol
  2200.  
  2201.  
  2202.  
  2203.                             4.  OTHER ISSUES
  2204.  
  2205. This section discusses various other issues that need to be dealt with
  2206. in a computer message system.
  2207.  
  2208. 4.1.  Accounting and Billing
  2209.  
  2210.   Accounting and billing must be performed by the MPM.  The charge to
  2211.   the user by the message delivery system must be predictable, and so
  2212.   cannot depend on the actual cost of sending a particular message which
  2213.   incurs random delays, handling and temporary storage charges.  Rather,
  2214.   these costs must be aggregated and charged back to the users on an
  2215.   average cost basis.  The user of the service may be charged based on
  2216.   the destination or distance, the length of the message, type of
  2217.   service, or other parameters selected as the message is entered into
  2218.   the delivery system, but must not depend on essentially random
  2219.   handling by the system of the particular message.
  2220.  
  2221.   This means it is pointless to have each message carry an accumulated
  2222.   charge (or list of charges).  Rather, the MPM will keep a log of
  2223.   messages handled and periodically bill the originators of those
  2224.   messages.
  2225.  
  2226.   It seems that the most reasonable scheme is to follow the practice of
  2227.   the international telephone authorities.  In such schemes the
  2228.   authority where the message originates bills the user of the service
  2229.   for the total charge.  The authorities assist each other in providing
  2230.   the international message transfer and the authorities periodically
  2231.   settle any differences in accounts due to an imbalance in
  2232.   international traffic.
  2233.  
  2234.   Thus the MPMs will keep logs of messages handled and will periodically
  2235.   charge their neighboring MPM for messages handled for them.  This
  2236.   settlement procedure is outside the message system and between the
  2237.   administrators of the MPMs.
  2238.  
  2239.   As traffic grows it will be impractical to log every message
  2240.   individually.  It will be necessary to establish categories of
  2241.   messages (e.g., short, medium, large) and only count the number in
  2242.   each category.
  2243.  
  2244.   The MPM at the source of the message will have a local means of
  2245.   identifying the user to charge for the message delivery service.  The
  2246.   relay and destination MPMs will know which neighbor MPMs to charge (or
  2247.   settle with) for delivery of their messages.
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253. Postel                                                         [Page 35]
  2254.  
  2255.  
  2256.                                                              August 1980
  2257. Internet Message Protocol
  2258. Other Issues
  2259.  
  2260.  
  2261.  
  2262. 4.2.  Addressing and Routing
  2263.  
  2264.   The mailbox provides for many types of address information.  The MPMs
  2265.   in the ARPA internet can most effectively use the internet address
  2266.   [2].  The use of other address information is not yet very clear.
  2267.   Some thoughts on addressing issues may be found in the references
  2268.   [33,34,35].
  2269.  
  2270.   An MPM sometimes must make a routing decision when it is acting as a
  2271.   relay-MPM (or source MPM).  It must be able to use the information
  2272.   from the mailbox to determine to which of its neighbor MPMs to send
  2273.   the message.  One way this might be implemented is to have a table of
  2274.   destination networks with corresponding neighbor MPM identifiers to
  2275.   use for routing toward that network.
  2276.  
  2277.   It is not expected that such routing tables would be very dynamic.
  2278.   Changes would occur only when new MPMs came into existence or MPMs
  2279.   went out of service for periods of days.
  2280.  
  2281.   Even with relatively slowly changing routing information the MPMs need
  2282.   an automatic mechanism for adjusting their routing tables.  The
  2283.   routing problem here is quite similar to the problem of routing in a
  2284.   network of packet switches such as the ARPANET IMPs or a set of
  2285.   internet gateways.  A great deal of work has been done on such
  2286.   problems and many simple schemes have been found faulty.  There are
  2287.   details of these procedures which may become troublesome when the
  2288.   number of nodes grows beyond a certain point or the frequency of
  2289.   update exchanges gets large.
  2290.  
  2291.   A basic routing scheme is to have a table of <network-name,
  2292.   mpm-identifier> pairs.  The MPM could look up the network name found
  2293.   in the mailbox of the message and determine the internet
  2294.   mpm-identifier of the next MPM to which to route the message.  To
  2295.   permit automatic routing updates another column would be added to
  2296.   indicate the distance to the destination.  This could be measured in
  2297.   several ways, for example, the number of relay MPM (or hops) to the
  2298.   final destination.  In this case each entry in the table is a triple
  2299.   of <network-name, mpm-identifier, distance>.
  2300.  
  2301.   To update the routing information when changes occur an MPM updates
  2302.   its table.  It then sends to each next MPM in its table a table of
  2303.   pairs <network-name, distance>, which say in effect "I can get a
  2304.   message to each of these networks with "cost" distance."  An MPM which
  2305.   receives such an update will add to all the distances the distance to
  2306.   the MPM sending the update (e.g., one hop) and compare the information
  2307.   with its own table.
  2308.  
  2309.  
  2310.  
  2311. [Page 36]                                                         Postel
  2312.  
  2313.  
  2314. August 1980                                                             
  2315.                                                Internet Message Protocol
  2316.                                                             Other Issues
  2317.  
  2318.  
  2319.  
  2320.   If the update information shows that the distance to a destination
  2321.   network is now smaller via the MPM which sent the update, the MPM
  2322.   changes its own table to reflect the better route, and the new
  2323.   distance.  If the MPM has made changes in its table it sends update
  2324.   information to all the MPMs listed as next-MPMs in its table.
  2325.  
  2326.   One further feature is that when a new network comes into existence an
  2327.   entry must be added to the table in each MPM.  The MPMs should
  2328.   therefore expect the case that update information may contain entries
  2329.   which are new networks, and in such an event add these entries to
  2330.   their own tables.
  2331.  
  2332.   When a new MPM comes into existence it will have an initial table
  2333.   indicating that it is a good route (short distance) to the network it
  2334.   is in, and will have entries for a few neighbor networks.  It will
  2335.   send an initial "update" to those neighbor MPMs which will respond
  2336.   with more complete tables, thus informing the new MPM of routes to
  2337.   many networks.
  2338.  
  2339.   This routing update mechanism is a simple minded scheme and may have
  2340.   to be replaced as the system of MPMs grows.  In addition it ignores
  2341.   the opportunity for MPMs to use other information (besides destination
  2342.   network name) for routing.  MPMs may have tables that indicate
  2343.   next-MPMs based on city, telephone number, organization, or other
  2344.   categories of information.
  2345.  
  2346. 4.3.  Encryption
  2347.  
  2348.   It is straightforward to add the capability to have the document
  2349.   portion of messages either wholly or partially encrypted.  An
  2350.   additional basic data element is defined to carry encrypted data.  The
  2351.   data within this element may be composed of other elements, but that
  2352.   could only be perceived after the data was decrypted.
  2353.  
  2354.   
  2355.                       +------+------+------+------+
  2356.     14 Encrypt        |  14  |     octet count    |
  2357.                       +------+------+------+------+
  2358.    
  2359.                              +------+------+------+-------
  2360.                              |alg id|   key id    | Data ...
  2361.                              +------+------+------+--------
  2362.  
  2363.   Element code 14 (ENCRYPT) is used to encapsulate encrypted data.  The
  2364.   format is the one-octet type code, the three-octet octet count, a
  2365.   one-octet algorithm identifier, a two-octet key identifier, and count
  2366.   octets of data.  Use of this element indicates that the data it
  2367.  
  2368.  
  2369. Postel                                                         [Page 37]
  2370.  
  2371.  
  2372.                                                              August 1980
  2373. Internet Message Protocol
  2374. Other Issues
  2375.  
  2376.  
  2377.  
  2378.   contains is encrypted.  The encryption scheme is indicated by the
  2379.   algorithm identifier, and the key used is indicated by the key
  2380.   identifier (this is not the key itself).  The NBS Data Encryption
  2381.   Standard (DES) [36], public key encryption [37,38,39], or other
  2382.   schemes may be used.
  2383.  
  2384.   To process this data element, the user is asked for the appropriate
  2385.   key and the data can then be decrypted.  The data thus revealed will
  2386.   be in the form of complete data element fields.  Encryption cannot
  2387.   occur over a partial field.  The revealed data is then processed
  2388.   normally.
  2389.  
  2390.   Note that there is no reason why all fields of a document could not be
  2391.   encrypted including all document header information such as From,
  2392.   Date, etc.
  2393.  
  2394.   
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427. [Page 38]                                                         Postel
  2428.  
  2429.  
  2430. August 1980                                                             
  2431.                                                Internet Message Protocol
  2432.  
  2433.  
  2434.  
  2435.                  5.  THE MPM:  A POSSIBLE ARCHITECTURE
  2436.  
  2437. The heart of the internet message system is the MPM which is responsible
  2438. for routing and delivering messages.  Each network must have at least
  2439. one MPM.  These MPMs are logically connected together, and internet mail
  2440. is always transferred along logical channels between them.  The MPMs
  2441. interface with existing local message systems.
  2442.  
  2443. Since the local message system may be very different from the internet
  2444. system, special programs may be necessary to convert incoming internet
  2445. messages to the local format.  Likewise, messages outgoing to other
  2446. networks may be converted to the internet format and sent via the MPMs.
  2447.  
  2448. 5.1.  Interfaces
  2449.  
  2450.   User Interface
  2451.  
  2452.     It is assumed that the interface between the MPM and the UIP
  2453.     provides for passing data structures which represent the document
  2454.     portion of the message.  In addition, this interface must pass the
  2455.     delivery address information (which becomes the information in the
  2456.     mailbox field of the command).  It is assumed that the information
  2457.     is passed between the UIP and the MPM via shared files, but this is
  2458.     not the only possible mechanism.  These two processes may be more
  2459.     strongly coupled (e.g., by sharing memory), or less strongly coupled
  2460.     (e.g., by communicating via logical channels).
  2461.  
  2462.     When a UIP passes a document and a destination address to the MPM,
  2463.     the MPM assigns a transaction-number and forms a message to send.
  2464.     The MPM must record the relationship between the transaction-number,
  2465.     the document, and the UIP, so that it can inform the UIP about the
  2466.     outcome of the delivery attempt for that document when the
  2467.     acknowledgment message is received at some later time.
  2468.  
  2469.     Assuming a file passing mode of communication between the UIP and
  2470.     the MPM the sending and receiving of mail might involve the
  2471.     following interactions:
  2472.  
  2473.       A user has an interactive session with a UIP to compose a document
  2474.       to send to a destination (or list of destinations).  When the user
  2475.       indicates to the UIP that the document is to be sent, the UIP
  2476.       places the information into a file for the MPM.  The UIP may then
  2477.       turn to the next request of the user.
  2478.  
  2479.       The MPM finds the file and extracts the the information.  It
  2480.       creates a message, assigning a transaction-number and forming a
  2481.       deliver command.  The MPM records the UIP associated with this
  2482.       message.  The MPM sends the message toward the destination.
  2483.  
  2484.  
  2485. Postel                                                         [Page 39]
  2486.  
  2487.  
  2488.                                                              August 1980
  2489. Internet Message Protocol
  2490. MPM Architecture
  2491.  
  2492.  
  2493.  
  2494.       When the MPM receives a deliver message from another MPM addressed
  2495.       to a user in its domain, it extracts the document and puts it into
  2496.       a file for the UIP associated with the destination user.  The MPM
  2497.       also sends an acknowledge message to the originating MPM.
  2498.  
  2499.       When the MPM receives an acknowledgment for a message it sent, the
  2500.       MPM creates a notification for the associated UIP and places it in
  2501.       a file for that UIP.
  2502.  
  2503.       The format of these files is up to each UIP/MPM interface pair.
  2504.       One reasonable choice is to use the same data structures used in
  2505.       the MPM-MPM communication.
  2506.  
  2507.   Communication Interface
  2508.  
  2509.     It is assumed here that the MPMs use an underlying communication
  2510.     system, and TCP [3] has been taken as the model.  In particular, the
  2511.     MPM is assumed to be listening for a TCP connection on a TCP port,
  2512.     i.e., it is a server process.  The port is either given explicitly
  2513.     in the mpm-identifier or takes the default vaule 45 (55 octal) [4].
  2514.     Again, this is not intended to limit the implementation choices;
  2515.     other forms of interprocess communication are allowed, and other
  2516.     types of physical interconnection are permitted.  One might even use
  2517.     dial telephone calls to interconnect MPMs (using suitable protocols
  2518.     to provide reliable communication) [12,19,20,21].
  2519.  
  2520.   
  2521.  
  2522. 5.2.  The MPM Organization
  2523.  
  2524.   Messages in the internet mail system are transmitted in lists called
  2525.   message-bags (or simply bags), each bag containing one or more
  2526.   messages.  Each MPM is expected to implement functions which will
  2527.   allow it to deliver local messages it receives and to forward
  2528.   non-local ones to other MPMs presumably closer to the message's
  2529.   destination.
  2530.  
  2531.   Loosely, each MPM can be separated into six components:
  2532.  
  2533.     1--Acceptor
  2534.  
  2535.       Receives incoming message-bags, from other MPMs, from UIPs, or
  2536.       from conversion programs.
  2537.  
  2538.     2--Message-Bag Processor
  2539.  
  2540.       Splits a bag into these three portions:
  2541.  
  2542.  
  2543. [Page 40]                                                         Postel
  2544.  
  2545.  
  2546. August 1980                                                             
  2547.                                                Internet Message Protocol
  2548.  
  2549.  
  2550.  
  2551.         a.    Local Host Messages
  2552.         b.    Local Net Messages
  2553.         c.    Foreign Net Messages
  2554.  
  2555.     3--Local Host Delivery
  2556.  
  2557.       Delivers local host messages, may call on conversion program.
  2558.  
  2559.     4--Local Net Delivery
  2560.  
  2561.       Delivers local net messages, may call on conversion program.
  2562.  
  2563.     5--Foreign Net Router
  2564.  
  2565.       Forms message-bags for transmission to other MPMs and determines
  2566.       the first step in the route.
  2567.  
  2568.     6--Foreign Net Sender
  2569.  
  2570.       Activates transmission channels to other MPMs and sends
  2571.       message-bags to foreign MPMs.
  2572.  
  2573.   If the local net message system uses the protocol of the MPMs, then
  2574.   there need be no distinction between local net and foreign net
  2575.   delivery procedures.
  2576.  
  2577.   All of these components can be thought of as independent.  The
  2578.   function of the Acceptor is to await incoming message-bags and to
  2579.   insert them into the Bag-Input Queue.
  2580.  
  2581.   The Bag-Input queue is read by the message-bag Processor which will
  2582.   separate and deliver suitable portions of the message-bags it
  2583.   retrieves from the queue to one of three queues:
  2584.  
  2585.     a.    Local Host Queue
  2586.     b.    Local Net Queue
  2587.     c.    Foreign Net Queue
  2588.  
  2589.   When an MPM has a message to send to another MPM, it must add its own
  2590.   handling-stamp to the trace field of the command.  The trace then
  2591.   becomes a record of the route the message has taken.  An MPM should
  2592.   examine the trace field to see if the message is in a routing loop.
  2593.   All commands require the return of the trace as a trail in the
  2594.   matching reply command.
  2595.  
  2596.   All of these queues have as elements complete message-bags created by
  2597.   selecting messages from the input message-bags.
  2598.  
  2599.  
  2600.  
  2601. Postel                                                         [Page 41]
  2602.  
  2603.  
  2604.                                                              August 1980
  2605. Internet Message Protocol
  2606.  
  2607.  
  2608.  
  2609.   The Local Host queue serves as input to the Local Host Delivery
  2610.   process.  This component is responsible for delivering messages to its
  2611.   local host.  It may call on a conversion program to reformat the
  2612.   messages into a form the local protocol will accept.  This will
  2613.   probably involve such things as copying shared information.
  2614.  
  2615.   The Local Net queue serves as input to the Local Net Delivery process.
  2616.   This component is responsible for delivering messages to other hosts
  2617.   on its local net.  It must be capable of handling whatever error
  2618.   conditions the local net might return, and should include the ability
  2619.   to retransmit.  It may call on a conversion program to reformat the
  2620.   messages into a form the local protocol will accept.  This will
  2621.   probably involve such things as copying shared information.
  2622.  
  2623.   The other two processes are more closely coupled.  The Foreign Net
  2624.   Router takes its input bags from the Foreign Net Queue.  From the
  2625.   internal information it contains, it determines which of the MPMs to
  2626.   which it is connected should receive the bag.
  2627.  
  2628.   It then places the bag along with the routing information into the
  2629.   Send Mail Queue.  The Foreign Net Sender retrieves it from that queue
  2630.   and transmits it across a channel to the intended foreign MPM.  The
  2631.   Sender aggregates messages to the same next MPM into a bag.
  2632.  
  2633.   The Foreign Net Router should be capable of receiving external input
  2634.   to its routing information table.  This may come from the Foreign Net
  2635.   Sender in the case of a channel going down, requiring a decision to
  2636.   either postpone delivery or to determine a new route.  The Router is
  2637.   responsible for maintaining sufficient information to determine where
  2638.   to send any incoming message-bag.
  2639.  
  2640.   Forwarding
  2641.  
  2642.     An MPM may have available information on the correct mailboxes of
  2643.     users which are not at its location.  This information, called a
  2644.     forwarding data base, may be used to return the correct address in
  2645.     response to a probe command, or to actually forward a deliver
  2646.     command (if allowed by the type of service).
  2647.  
  2648.     Because such forwarding may cause the route of a message to pass
  2649.     through an MPM already on the trace of this message, only the
  2650.     portion of the trace back to the most recent forward action should
  2651.     be used for loop detection by a relay relaying MPM, and only the
  2652.     forward action entries in the trace should be checked by a
  2653.     forwarding MPM.
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659. [Page 42]                                                         Postel
  2660.  
  2661.  
  2662. August 1980                                                             
  2663.                                                Internet Message Protocol
  2664.  
  2665.  
  2666.  
  2667.   Implementation Recommendations
  2668.  
  2669.     Transaction numbers can be assigned sequentially, with wrap around
  2670.     when the highest value is reached.  This should ensure that no
  2671.     message with a particular transaction number from this source is in
  2672.     the network when another instance of this transaction number is
  2673.     chosen.
  2674.  
  2675.     The processing to separate shared elements when the routes of the
  2676.     shared elements diverge while still preserving the sharing possible
  2677.     appears to be an O(N*M**2) operation where N is the number of
  2678.     distinct objects in a message which may be shared across message
  2679.     boundaries and M is the number of messages in the bag.
  2680.  
  2681.     Also note that share-tags may be copied into separate message bags
  2682.     which are not referenced.  These could be removed with another pass
  2683.     over the message bag.
  2684.  
  2685.     
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717. Postel                                                         [Page 43]
  2718.  
  2719.  
  2720.                                                              August 1980
  2721. Internet Message Protocol
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775. [Page 44]                                                         Postel
  2776.  
  2777.  
  2778. August 1980                                                             
  2779.                                                Internet Message Protocol
  2780.  
  2781.  
  2782.  
  2783.                         6.  EXAMPLES & SCENARIOS
  2784.  
  2785. Example 1:  Message Format
  2786.  
  2787.   Suppose we want to send the following message:
  2788.  
  2789.     Date: 1979-03-29-11:46-08:00
  2790.     From: Jon Postel <Postel@ISIE>
  2791.     Subject: Meeting Thursday
  2792.     To: Danny Cohen <Cohen@USC-ISIB>
  2793.     CC: Linda
  2794.      
  2795.     Danny:
  2796.      
  2797.     Please mark your calendar for our meeting Thursday at 3 pm.
  2798.      
  2799.     --jon.
  2800.  
  2801.   It will be encoded in the structured format.  The following will
  2802.   present successive steps in the top down generation of this message.
  2803.   The actual document above will not be shown in the coded form.
  2804.  
  2805.   1.  message
  2806.  
  2807.   2.  (identification, command, document)
  2808.  
  2809.   3.  (ID:(mpm-identifier, transaction-number),
  2810.        CMD:(MAILBOX:mailbox, OPERATION:operation,
  2811.                                                 arguments, TRACE:trace),
  2812.        DOC:<<document>>)
  2813.  
  2814.   4.  (ID:(mpm-identifier, transaction-number),
  2815.        CMD:(MAILBOX:mailbox, OPERATION:operation,
  2816.                                   TYPE-OF-SERVICE:regular, TRACE:trace),
  2817.        DOC:<<document>>)
  2818.  
  2819.   5.  (ID:(MPM:(IA:12,1,0,52,0,45), TRANSACTION:37),
  2820.        CMD:(MAILBOX:(MPM:(IA:12,3,0,52,0,45),
  2821.                      NET:ARPA,
  2822.                      HOST:ISIB,
  2823.                      PORT:45,
  2824.                      USER:Cohen),
  2825.             OPERATION:DELIVER,
  2826.             TYPE-OF-SERVICE:REGULAR,
  2827.             TRACE:(MPM:(IA:12,1,0,52,0,45)
  2828.                    DATE:1979-03-29-11:46-08:00,
  2829.                    ACTION:ORIGIN)),
  2830.        DOC:<<document>>)
  2831.  
  2832.  
  2833. Postel                                                         [Page 45]
  2834.  
  2835.  
  2836.                                                              August 1980
  2837. Internet Message Protocol
  2838. Examples & Scenarios
  2839.  
  2840.  
  2841.  
  2842.   6.  PROPLIST:(
  2843.         ID:PROPLIST:(
  2844.              MPM:PROPLIST:(
  2845.                    IA:12,1,0,52,0,45),
  2846.                  ENDLIST
  2847.              TRANSACTION:37)
  2848.            ENDLIST,
  2849.  
  2850.         CMD:PROPLIST(
  2851.              MAILBOX:(PROPLIST:(
  2852.                         MPM:PROPLIST(
  2853.                               IA:12,3,0,52,0,45),
  2854.                             ENDLIST
  2855.                         NET:ARPA,
  2856.                         HOST:ISIB,
  2857.                         PORT:45,
  2858.                         USER:Cohen ),
  2859.                       ENDLIST
  2860.              OPERATION:DELIVER,
  2861.              TYPE-OF-SERVICE:REGULAR,
  2862.              TRACE:(PROPLIST:MPM:
  2863.                        (PROPLIST:
  2864.                           IA:12,1,0,52,0,45)
  2865.                         ENDLIST
  2866.                       DATE:1979-03-29-11:46-08:00,
  2867.                       ACTION:ORIGIN)),
  2868.                     ENDLIST
  2869.           ENDLIST
  2870.         DOC:<<document>>)
  2871.       ENDLIST
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891. [Page 46]                                                         Postel
  2892.  
  2893.  
  2894. August 1980                                                             
  2895.                                                Internet Message Protocol
  2896.                                                     Examples & Scenarios
  2897.  
  2898.  
  2899.  
  2900. Example 2:  Delivery and Acknowledgment
  2901.  
  2902.   The following are four views of the message of example 1 during the
  2903.   successive transmission from the origination MPM, through a relay MPM,
  2904.   to the destination MPM, and the return of the acknowledgment, through
  2905.   a relay MPM, to the originating MPM.
  2906.  
  2907.   +-----------------------------------------------------------------+ 
  2908.   |                          A         B                            | 
  2909.   | sending --> originating --> relay --> destination --> receiving | 
  2910.   |   user          MPM          MPM          MPM            user   | 
  2911.   |                                                                 | 
  2912.   |                          D         C                            | 
  2913.   |             originating <-- relay <-- destination               | 
  2914.   |                 MPM          MPM          MPM                   | 
  2915.   +-----------------------------------------------------------------+ 
  2916.  
  2917.                            Transmission Path
  2918.  
  2919.                                Figure 6.
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949. Postel                                                         [Page 47]
  2950.  
  2951.  
  2952.                                                              August 1980
  2953. Internet Message Protocol
  2954. Examples & Scenarios
  2955.  
  2956.  
  2957.  
  2958.   A.  Between the originating MPM and the relay MPM.
  2959.  
  2960.     PROPLIST:
  2961.       NAME:"ID",
  2962.         PROPLIST:
  2963.           NAME:"MPM",
  2964.             PROPLIST:
  2965.               NAME:"IA", NAME:"10,1,0,52,0,45"
  2966.             ENDLIST
  2967.           NAME:"TRANSACTION", INTEGER:37
  2968.         ENDLIST
  2969.       NAME:"CMD",
  2970.         PROPLIST:
  2971.           NAME:"MAILBOX",
  2972.             PROPLIST:
  2973.               NAME:"MPM",
  2974.                 PROPLIST:
  2975.                   NAME:"IA", NAME:"10,3,0,52,0,45"
  2976.                 ENDLIST
  2977.               NAME:"NET", NAME:"ARPA"
  2978.               NAME:"HOST", NAME:"ISIB"
  2979.               NAME:"PORT", NAME:"45"
  2980.               NAME:"USER", NAME:"Cohen"
  2981.             ENDLIST
  2982.           NAME:"OPERATION", NAME:"DELIVER"
  2983.           NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
  2984.           NAME:"TRACE",
  2985.             LIST:
  2986.               PROPLIST:
  2987.                 NAME:"MPM",
  2988.                   PROPLIST:
  2989.                     NAME:"IA", NAME:"10,1,0,52,0,45"
  2990.                   ENDLIST
  2991.                 NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
  2992.                 NAME:"ACTION", NAME:"ORIGIN"
  2993.               ENDLIST
  2994.             ENDLIST
  2995.         ENDLIST
  2996.       NAME:"DOC", <<document>>
  2997.     ENDLIST
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007. [Page 48]                                                         Postel
  3008.  
  3009.  
  3010. August 1980                                                             
  3011.                                                Internet Message Protocol
  3012.                                                     Examples & Scenarios
  3013.  
  3014.  
  3015.  
  3016.   B.  Between the relay MPM and the destination MPM.
  3017.  
  3018.     PROPLIST:
  3019.       NAME:"ID",
  3020.         PROPLIST:
  3021.           NAME:"MPM",
  3022.             PROPLIST:
  3023.               NAME:"IA", NAME:"10,1,0,52,0,45"
  3024.             ENDLIST
  3025.           NAME:"TRANSACTION", INTEGER:37
  3026.         ENDLIST
  3027.       NAME:"CMD",
  3028.         PROPLIST:
  3029.           NAME:"MAILBOX",
  3030.             PROPLIST:
  3031.               NAME:"MPM",
  3032.                 PROPLIST:
  3033.                   NAME:"IA", NAME:"10,3,0,52,0,45"
  3034.                 ENDLIST
  3035.               NAME:"NET", NAME:"ARPA"
  3036.               NAME:"HOST", NAME:"ISIB"
  3037.               NAME:"PORT", NAME:"45"
  3038.               NAME:"USER", NAME:"Cohen"
  3039.             ENDLIST
  3040.           NAME:"OPERATION", NAME:"DELIVER"
  3041.           NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
  3042.           NAME:"TRACE",
  3043.             LIST:
  3044.               PROPLIST:
  3045.                 NAME:"MPM",
  3046.                   PROPLIST:
  3047.                     NAME:"IA", NAME:"10,1,0,52,0,45"
  3048.                   ENDLIST
  3049.                 NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
  3050.                 NAME:"ACTION", NAME:"ORIGIN"
  3051.               ENDLIST
  3052.               PROPLIST:
  3053.                 NAME:"MPM",
  3054.                   PROPLIST:
  3055.                     NAME:"IA", NAME:"10,2,0,52,0,45"
  3056.                   ENDLIST
  3057.                 NAME:"DATE", NAME:"1979-03-29-11:48-08:00"
  3058.                 NAME:"ACTION", NAME:"RELAY"
  3059.               ENDLIST
  3060.             ENDLIST
  3061.         ENDLIST
  3062.       NAME:"DOC", <<document>>
  3063.  
  3064.  
  3065. Postel                                                         [Page 49]
  3066.  
  3067.  
  3068.                                                              August 1980
  3069. Internet Message Protocol
  3070. Examples & Scenarios
  3071.  
  3072.  
  3073.  
  3074.     ENDLIST
  3075.  
  3076.   C.  Between the destination MPM and the relay MPM.
  3077.  
  3078.     PROPLIST:
  3079.       NAME:"ID",
  3080.         PROPLIST:
  3081.           NAME:"MPM",
  3082.             PROPLIST:
  3083.               NAME:"IA", NAME:"10,3,0,52,0,45"
  3084.             ENDLIST
  3085.           NAME:"TRANSACTION", INTEGER:1993
  3086.         ENDLIST
  3087.       NAME:"CMD",
  3088.         PROPLIST:
  3089.           NAME:"MAILBOX",
  3090.             PROPLIST:
  3091.               NAME:"MPM",
  3092.                 PROPLIST:
  3093.                   NAME:"IA", INTEGER:"10,1,0,52,0,45"
  3094.                 ENDLIST
  3095.               NAME:"NET", NAME:"ARPA"
  3096.               NAME:"HOST", NAME:"ISIE"
  3097.               NAME:"PORT", NAME:"45"
  3098.               NAME:"USER", NAME:"*MPM*"
  3099.             ENDLIST
  3100.           NAME:"OPERATION", NAME:"ACKNOWLEDGE"
  3101.           NAME:"REFERENCE",
  3102.             PROPLIST:
  3103.               NAME:"MPM",
  3104.                 PROPLIST:
  3105.                   NAME:"IA", NAME:"10,1,0,52,0,45"
  3106.                 ENDLIST
  3107.               NAME:"TRANSACTION", INTEGER:37
  3108.             ENDLIST
  3109.           NAME:"ADDRESS",
  3110.             PROPLIST:
  3111.               NAME:"MPM",
  3112.                 PROPLIST:
  3113.                   NAME:"IA", INTEGER:"10,3,0,52,0,45"
  3114.                 ENDLIST
  3115.               NAME:"USER", NAME:"Cohen"
  3116.             ENDLIST
  3117.           NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
  3118.           NAME:"ERROR-CLASS", INDEX:0
  3119.           NAME:"ERROR-STRING", NAME:"Ok"
  3120.           NAME:"TRAIL",
  3121.  
  3122.  
  3123. [Page 50]                                                         Postel
  3124.  
  3125.  
  3126. August 1980                                                             
  3127.                                                Internet Message Protocol
  3128.                                                     Examples & Scenarios
  3129.  
  3130.  
  3131.  
  3132.             LIST:
  3133.               PROPLIST:
  3134.                 NAME:"MPM",
  3135.                   PROPLIST:
  3136.                     NAME:"IA", NAME:"10,1,0,52,0,45"
  3137.                   ENDLIST
  3138.                 NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
  3139.                 NAME:"ACTION", NAME:"ORIGIN"
  3140.               ENDLIST
  3141.               PROPLIST:
  3142.                 NAME:"MPM",
  3143.                   PROPLIST:
  3144.                     NAME:"IA", NAME:"10,2,0,52,0,45"
  3145.                   ENDLIST
  3146.                 NAME:"DATE", NAME:"1979-03-29-11:48-08:00"
  3147.                 NAME:"ACTION", NAME:"RELAY"
  3148.               ENDLIST
  3149.               PROPLIST:
  3150.                 NAME:"MPM",
  3151.                   PROPLIST:
  3152.                     NAME:"IA", NAME:"10,3,0,52,0,45"
  3153.                   ENDLIST
  3154.                 NAME:"DATE", NAME:"1979-03-29-11:51.567-08:00"
  3155.                 NAME:"ACTION", NAME:"DESTINATION"
  3156.               ENDLIST
  3157.             ENDLIST
  3158.           NAME:"TRACE",
  3159.             LIST:
  3160.               PROPLIST:
  3161.                 NAME:"MPM",
  3162.                   PROPLIST:
  3163.                     NAME:"IA", NAME:"10,3,0,52,0,45"
  3164.                   ENDLIST
  3165.                 NAME:"DATE", NAME:"1979-03-29-11:52-08:00"
  3166.                 NAME:"ACTION", NAME:"ORIGIN"
  3167.               ENDLIST
  3168.             ENDLIST
  3169.         ENDLIST
  3170.     ENDLIST
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.  
  3180.  
  3181. Postel                                                         [Page 51]
  3182.  
  3183.  
  3184.                                                              August 1980
  3185. Internet Message Protocol
  3186. Examples & Scenarios
  3187.  
  3188.  
  3189.  
  3190.   D.  Between the relay MPM and the originating MPM.
  3191.  
  3192.     PROPLIST:
  3193.       NAME:"ID",
  3194.         PROPLIST:
  3195.           NAME:"MPM",
  3196.             PROPLIST:
  3197.               NAME:"IA", NAME:"10,3,0,52,0,45"
  3198.             ENDLIST
  3199.           NAME:"TRANSACTION", INTEGER:1993
  3200.         ENDLIST
  3201.       NAME:"CMD",
  3202.         PROPLIST:
  3203.           NAME:"MAILBOX",
  3204.             PROPLIST:
  3205.               NAME:"MPM",
  3206.                 PROPLIST:
  3207.                   NAME:"IA", INTEGER:"10,1,0,52,0,45"
  3208.                 ENDLIST
  3209.               NAME:"NET", NAME:"ARPA"
  3210.               NAME:"HOST", NAME:"ISIE"
  3211.               NAME:"PORT", NAME:"45"
  3212.               NAME:"USER", NAME:"*MPM*"
  3213.             ENDLIST
  3214.           NAME:"OPERATION", NAME:"ACKNOWLEDGE"
  3215.           NAME:"REFERENCE",
  3216.             PROPLIST:
  3217.               NAME:"MPM",
  3218.                 PROPLIST:
  3219.                   NAME:"IA", NAME:"10,1,0,52,0,45"
  3220.                 ENDLIST
  3221.               NAME:"TRANSACTION", INTEGER:37
  3222.             ENDLIST
  3223.           NAME:"ADDRESS",
  3224.             PROPLIST:
  3225.               NAME:"MPM",
  3226.                 PROPLIST:
  3227.                   NAME:"IA", INTEGER:"10,3,0,52,0,45"
  3228.                 ENDLIST
  3229.               NAME:"USER", NAME:"Cohen"
  3230.             ENDLIST
  3231.           NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
  3232.           NAME:"ERROR-CLASS", INDEX:0
  3233.           NAME:"ERROR-STRING", NAME:"Ok"
  3234.           NAME:"TRAIL",
  3235.             LIST:
  3236.               PROPLIST:
  3237.  
  3238.  
  3239. [Page 52]                                                         Postel
  3240.  
  3241.  
  3242. August 1980                                                             
  3243.                                                Internet Message Protocol
  3244.                                                     Examples & Scenarios
  3245.  
  3246.  
  3247.  
  3248.                 NAME:"MPM",
  3249.                   PROPLIST:
  3250.                     NAME:"IA", NAME:"10,1,0,52,0,45"
  3251.                   ENDLIST
  3252.                 NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
  3253.                 NAME:"ACTION", NAME:"ORIGIN"
  3254.               ENDLIST
  3255.               PROPLIST:
  3256.                 NAME:"MPM",
  3257.                   PROPLIST:
  3258.                     NAME:"IA", NAME:"10,2,0,52,0,45"
  3259.                   ENDLIST
  3260.                 NAME:"DATE", NAME:"1979-03-29-11:48-08:00"
  3261.                 NAME:"ACTION", NAME:"RELAY"
  3262.               ENDLIST
  3263.               PROPLIST:
  3264.                 NAME:"MPM",
  3265.                   PROPLIST:
  3266.                     NAME:"IA", NAME:"10,3,0,52,0,45"
  3267.                   ENDLIST
  3268.                 NAME:"DATE", NAME:"1979-03-29-11:51.567-08:00"
  3269.                 NAME:"ACTION", NAME:"DESTINATION"
  3270.               ENDLIST
  3271.             ENDLIST
  3272.           NAME:"TRACE",
  3273.             LIST:
  3274.               PROPLIST:
  3275.                 NAME:"MPM",
  3276.                   PROPLIST:
  3277.                     NAME:"IA", NAME:"10,3,0,52,0,45"
  3278.                   ENDLIST
  3279.                 NAME:"DATE", NAME:"1979-03-29-11:52-08:00"
  3280.                 NAME:"ACTION", NAME:"ORIGIN"
  3281.               ENDLIST
  3282.               PROPLIST:
  3283.                 NAME:"MPM",
  3284.                   PROPLIST:
  3285.                     NAME:"IA", NAME:"10,2,0,52,0,45"
  3286.                   ENDLIST
  3287.                 NAME:"DATE", NAME:"1979-03-29-11:52.345-08:00"
  3288.                 NAME:"ACTION", NAME:"RELAY"
  3289.               ENDLIST
  3290.             ENDLIST
  3291.         ENDLIST
  3292.     ENDLIST
  3293.  
  3294.   
  3295.  
  3296.  
  3297. Postel                                                         [Page 53]
  3298.  
  3299.  
  3300.                                                              August 1980
  3301. Internet Message Protocol
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.  
  3313.  
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355. [Page 54]                                                         Postel
  3356.  
  3357.  
  3358. August 1980                                                             
  3359.                                                Internet Message Protocol
  3360.  
  3361.  
  3362.  
  3363.                        7.  SPECIFICATION SUMMARY
  3364.  
  3365.  
  3366.  
  3367. 7.1.  Message Fields
  3368.  
  3369.   All keywords used in this protocol are to be recognized independent of
  3370.   case.
  3371.  
  3372.   action: NAME (one of)
  3373.     "ORIGIN" | "RELAY" | "FORWARD" | "DESTINATION"
  3374.  
  3375.   address: PROPLIST (one of)
  3376.  
  3377.     NAME: "MPM", <mpm-identifier>
  3378.     NAME: "USER", <user>
  3379.  
  3380.       or
  3381.  
  3382.     NAME: "NET", <net>
  3383.     NAME: "HOST", <host>
  3384.     NAME: "PORT", <port>
  3385.     NAME: "USER", <user>
  3386.  
  3387.   answer: BOOLEAN
  3388.  
  3389.   city: NAME
  3390.  
  3391.   command: PROPLIST
  3392.     NAME: "MAILBOX", <mailbox>
  3393.     NAME: "OPERATION", <operation>
  3394.     <<arguments>>
  3395.     NAME: "ERROR-CLASS", <error-class>    (only in replies)
  3396.     NAME: "ERROR-STRING", <error-string>  (only in replies)
  3397.     NAME: "TRACE", <trace>
  3398.  
  3399.   country: NAME
  3400.  
  3401.   document: <<document>>
  3402.  
  3403.   error-class: INDEX
  3404.  
  3405.   error-string: NAME
  3406.  
  3407.   host: NAME
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413. Postel                                                         [Page 55]
  3414.  
  3415.  
  3416.                                                              August 1980
  3417. Internet Message Protocol
  3418.  
  3419.  
  3420.  
  3421.   handling-stamp: PROPLIST
  3422.     NAME: "MPM", <mpm-identifier>
  3423.     NAME: "DATE", <date>
  3424.     NAME: "ACTION", <action>
  3425.  
  3426.   identification: LIST
  3427.     NAME: "MPM", <mpm-identifier>
  3428.     NAME: "TRANSACTION", <transaction-number>
  3429.  
  3430.   internet-address: NAME
  3431.  
  3432.   mailbox:  PROPLIST (some of)
  3433.     NAME: "MPM", <mpm-identifier>
  3434.     NAME: "NET", <net>
  3435.     NAME: "HOST", <host>
  3436.     NAME: "PORT", <port>
  3437.     NAME: "USER", <user>
  3438.     NAME: "ORG", <organization>
  3439.     NAME: "CITY", <city>
  3440.     NAME: "STATE", <state>
  3441.     NAME: "COUNTRY", <country>
  3442.     NAME: "ZIP", <zip-code>
  3443.     NAME: "PHONE", <phone-number>
  3444.     <<other-items>>
  3445.  
  3446.   message: PROPLIST
  3447.     NAME: "ID", <identification>
  3448.     NAME: "CMD", <command>
  3449.     NAME: "DOC", <document> (only in deliver)
  3450.  
  3451.   mpm-identifier: PROPLIST (one of)
  3452.  
  3453.     NAME: "IA", <internet-address>
  3454.  
  3455.       or
  3456.  
  3457.     NAME: "X121", <x121-address>
  3458.  
  3459.   net: NAME
  3460.  
  3461.   operation: NAME (one of)
  3462.       "DELIVER" | "ACKNOWLEDGE
  3463.     | "PROBE"   | "RESPONSE
  3464.     | "CANCEL"  | "CANCELED"
  3465.  
  3466.   organization: NAME
  3467.  
  3468.   phone-number: NAME
  3469.  
  3470.  
  3471. [Page 56]                                                         Postel
  3472.  
  3473.  
  3474. August 1980                                                             
  3475.                                                Internet Message Protocol
  3476.  
  3477.  
  3478.  
  3479.   port: NAME
  3480.  
  3481.   state: NAME
  3482.  
  3483.   trace: LIST
  3484.     <handling-stamp>
  3485.     ...
  3486.  
  3487.   trail: LIST
  3488.     <handling-stamp>
  3489.     ...
  3490.  
  3491.   transaction-number: INTEGER
  3492.  
  3493.   type-of-service: NAME (one or more of)
  3494.     "REGULAR" | "FORWARD" | "GENDEL" | "PRIORITY"
  3495.  
  3496.   user: NAME
  3497.  
  3498.   x121-address: NAME
  3499.  
  3500.   zip-code: NAME
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.  
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529. Postel                                                         [Page 57]
  3530.  
  3531.  
  3532.                                                              August 1980
  3533. Internet Message Protocol
  3534.  
  3535.  
  3536.  
  3537. 7.2.  Deliver Message
  3538.  
  3539.   PROPLIST:
  3540.     NAME:"ID",
  3541.       PROPLIST:
  3542.         NAME:"MPM",
  3543.           PROPLIST:
  3544.             NAME:"IA", NAME:<internet-address>
  3545.           ENDLIST
  3546.         NAME:"TRANSACTION", INTEGER:<transaction-number>
  3547.       ENDLIST
  3548.     NAME:"CMD",
  3549.       PROPLIST:
  3550.         NAME:"MAILBOX",
  3551.           PROPLIST:
  3552.             NAME:"MPM",
  3553.               PROPLIST:
  3554.                 NAME:"IA", INTEGER:<internet-address>
  3555.               ENDLIST
  3556.             NAME:"NET", NAME:<net>
  3557.             NAME:"HOST", NAME:<host>
  3558.             NAME:"PORT", NAME:<port>
  3559.             NAME:"USER", NAME:<user>
  3560.             NAME:"ORG", NAME:<organization>
  3561.             NAME:"CITY", NAME:<city>
  3562.             NAME:"STATE", NAME:<state>
  3563.             NAME:"COUNTRY", NAME:<country>
  3564.             NAME:"ZIP", NAME:<zip-code>
  3565.             NAME:"PHONE", NAME:<phone-number>
  3566.             <<other-items>>
  3567.           ENDLIST
  3568.         NAME:"OPERATION", NAME:"DELIVER"
  3569.         NAME:"TYPE-OF-SERVICE", NAME:<type-of-service>
  3570.         NAME:"TRACE",
  3571.           LIST:
  3572.             PROPLIST:
  3573.               NAME:"MPM",
  3574.                 PROPLIST:
  3575.                   NAME:"IA", INTEGER:<internet-address>
  3576.                 ENDLIST
  3577.               NAME:"DATE", NAME:<date>
  3578.               NAME:"ACTION", NAME:<action>
  3579.             ENDLIST
  3580.             ...
  3581.           ENDLIST
  3582.       ENDLIST
  3583.     NAME:"DOC", <<document>>
  3584.   ENDLIST
  3585.  
  3586.  
  3587. [Page 58]                                                         Postel
  3588.  
  3589.  
  3590. August 1980                                                             
  3591.                                                Internet Message Protocol
  3592.  
  3593.  
  3594.  
  3595. 7.3.  Acknowledge Message
  3596.  
  3597.   PROPLIST:
  3598.     NAME:"ID",
  3599.       PROPLIST:
  3600.         NAME:"MPM",
  3601.           PROPLIST:
  3602.             NAME:"IA", NAME:<internet-address>
  3603.           ENDLIST
  3604.         NAME:"TRANSACTION", INTEGER:<transaction-number>
  3605.       ENDLIST
  3606.     NAME:"CMD",
  3607.       PROPLIST:
  3608.         NAME:"MAILBOX",
  3609.           PROPLIST:
  3610.             NAME:"MPM",
  3611.               PROPLIST:
  3612.                 NAME:"IA", INTEGER:<internet-address>
  3613.               ENDLIST
  3614.             NAME:"USER", NAME:"*MPM*"
  3615.             NAME:"NET", NAME:<net>
  3616.             NAME:"PORT", NAME:<port>
  3617.             NAME:"HOST", NAME:<host>
  3618.           ENDLIST
  3619.         NAME:"OPERATION", NAME:"ACKNOWLEDGE"
  3620.         NAME:"REFERENCE",
  3621.           PROPLIST:
  3622.             NAME:"MPM",
  3623.               PROPLIST:
  3624.                 NAME:"IA", NAME:<internet-address>
  3625.               ENDLIST
  3626.             NAME:"TRANSACTION", INTEGER:<transaction-number>
  3627.           ENDLIST
  3628.         NAME:"ADDRESS",
  3629.           PROPLIST:
  3630.             NAME:"MPM",
  3631.               PROPLIST:
  3632.                 NAME:"IA", INTEGER:<internet-address>
  3633.               ENDLIST
  3634.             NAME:"USER", NAME:<user>
  3635.           ENDLIST
  3636.         NAME:"TYPE-OF-SERVICE", NAME:<type-of-service>
  3637.         NAME:"ERROR-CLASS", INDEX:<error-class>
  3638.         NAME:"ERROR-STRING", NAME:<error-string>
  3639.         NAME:"TRAIL",
  3640.           LIST:
  3641.             PROPLIST:
  3642.               NAME:"MPM",
  3643.  
  3644.  
  3645. Postel                                                         [Page 59]
  3646.  
  3647.  
  3648.                                                              August 1980
  3649. Internet Message Protocol
  3650.  
  3651.  
  3652.  
  3653.                 PROPLIST:
  3654.                   NAME:"IA", INTEGER:<internet-address>
  3655.                 ENDLIST
  3656.               NAME:"DATE", NAME:<date>
  3657.               NAME:"ACTION", NAME:<action>
  3658.             ENDLIST
  3659.             ...
  3660.           ENDLIST
  3661.         NAME:"TRACE",
  3662.           LIST:
  3663.             PROPLIST:
  3664.               NAME:"MPM",
  3665.                 PROPLIST:
  3666.                   NAME:"IA", INTEGER:<internet-address>
  3667.                 ENDLIST
  3668.               NAME:"DATE", NAME:<date>
  3669.               NAME:"ACTION", NAME:<action>
  3670.             ENDLIST
  3671.             ...
  3672.           ENDLIST
  3673.       ENDLIST
  3674.   ENDLIST
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703. [Page 60]                                                         Postel
  3704.  
  3705.  
  3706. August 1980                                                             
  3707.                                                Internet Message Protocol
  3708.  
  3709.  
  3710.  
  3711. 7.4.  Probe Message
  3712.  
  3713.   PROPLIST:
  3714.     NAME:"ID",
  3715.       PROPLIST:
  3716.         NAME:"MPM",
  3717.           PROPLIST:
  3718.             NAME:"IA", NAME:<internet-address>
  3719.           ENDLIST
  3720.         NAME:"TRANSACTION", INTEGER:<transaction-number>
  3721.       ENDLIST
  3722.     NAME:"CMD",
  3723.       PROPLIST:
  3724.         NAME:"MAILBOX",
  3725.           PROPLIST:
  3726.             NAME:"MPM",
  3727.               PROPLIST:
  3728.                 NAME:"IA", INTEGER:<internet-address>
  3729.               ENDLIST
  3730.             NAME:"NET", NAME:<net>
  3731.             NAME:"HOST", NAME:<host>
  3732.             NAME:"PORT", NAME:<port>
  3733.             NAME:"USER", NAME:<user>
  3734.             NAME:"ORG", NAME:<organization>
  3735.             NAME:"CITY", NAME:<city>
  3736.             NAME:"STATE", NAME:<state>
  3737.             NAME:"COUNTRY", NAME:<country>
  3738.             NAME:"ZIP", NAME:<zip-code>
  3739.             NAME:"PHONE", NAME:<phone-number>
  3740.             <<other-items>>
  3741.           ENDLIST
  3742.         NAME:"OPERATION", NAME:"PROBE"
  3743.         NAME:"TRACE",
  3744.           LIST:
  3745.             PROPLIST:
  3746.               NAME:"MPM",
  3747.                 PROPLIST:
  3748.                   NAME:"IA", INTEGER:<internet-address>
  3749.                 ENDLIST
  3750.               NAME:"DATE", NAME:<date>
  3751.               NAME:"ACTION", NAME:<action>
  3752.             ENDLIST
  3753.             ...
  3754.           ENDLIST
  3755.       ENDLIST
  3756.   ENDLIST
  3757.  
  3758.  
  3759.  
  3760.  
  3761. Postel                                                         [Page 61]
  3762.  
  3763.  
  3764.                                                              August 1980
  3765. Internet Message Protocol
  3766.  
  3767.  
  3768.  
  3769. 7.5.  Response Message
  3770.  
  3771.   PROPLIST:
  3772.     NAME:"ID",
  3773.       PROPLIST:
  3774.         NAME:"MPM",
  3775.           PROPLIST:
  3776.             NAME:"IA", NAME:<internet-address>
  3777.           ENDLIST
  3778.         NAME:"TRANSACTION", INTEGER:<transaction-number>
  3779.       ENDLIST
  3780.     NAME:"CMD",
  3781.       PROPLIST:
  3782.         NAME:"MAILBOX",
  3783.           PROPLIST:
  3784.             NAME:"MPM",
  3785.               PROPLIST:
  3786.                 NAME:"IA", INTEGER:<internet-address>
  3787.               ENDLIST
  3788.             NAME:"NET", NAME:<net>
  3789.             NAME:"HOST", NAME:<host>
  3790.             NAME:"PORT", NAME:<port>
  3791.             NAME:"USER", NAME:"*MPM*"
  3792.           ENDLIST
  3793.         NAME:"OPERATION", NAME:"RESPONSE"
  3794.         NAME:"REFERENCE",
  3795.           PROPLIST:
  3796.             NAME:"MPM",
  3797.               PROPLIST:
  3798.                 NAME:"IA", NAME:<internet-address>
  3799.               ENDLIST
  3800.             NAME:"TRANSACTION", INTEGER:<transaction-number>
  3801.           ENDLIST
  3802.         NAME:"ADDRESS",
  3803.           PROPLIST:
  3804.             NAME:"MPM",
  3805.               PROPLIST:
  3806.                 NAME:"IA", INTEGER:<internet-address>
  3807.               ENDLIST
  3808.             NAME:"USER", NAME:<user>
  3809.           ENDLIST
  3810.         NAME:"ERROR-CLASS", INDEX:<error-class>
  3811.         NAME:"ERROR-STRING", NAME:<error-string>
  3812.         NAME:"TRAIL",
  3813.           LIST:
  3814.             PROPLIST:
  3815.               NAME:"MPM",
  3816.                 PROPLIST:
  3817.  
  3818.  
  3819. [Page 62]                                                         Postel
  3820.  
  3821.  
  3822. August 1980                                                             
  3823.                                                Internet Message Protocol
  3824.  
  3825.  
  3826.  
  3827.                   NAME:"IA", INTEGER:<internet-address>
  3828.                 ENDLIST
  3829.               NAME:"DATE", NAME:<date>
  3830.               NAME:"ACTION", NAME:<action>
  3831.             ENDLIST
  3832.             ...
  3833.           ENDLIST
  3834.         NAME:"TRACE",
  3835.           LIST:
  3836.             PROPLIST:
  3837.               NAME:"MPM",
  3838.                 PROPLIST:
  3839.                   NAME:"IA", INTEGER:<internet-address>
  3840.                 ENDLIST
  3841.               NAME:"DATE", NAME:<date>
  3842.               NAME:"ACTION", NAME:<action>
  3843.             ENDLIST
  3844.             ...
  3845.           ENDLIST
  3846.       ENDLIST
  3847.   ENDLIST
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861.  
  3862.  
  3863.  
  3864.  
  3865.  
  3866.  
  3867.  
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877. Postel                                                         [Page 63]
  3878.  
  3879.  
  3880.                                                              August 1980
  3881. Internet Message Protocol
  3882.  
  3883.  
  3884.  
  3885. 7.6.  Cancel Message
  3886.  
  3887.   PROPLIST:
  3888.     NAME:"ID",
  3889.       PROPLIST:
  3890.         NAME:"MPM",
  3891.           PROPLIST:
  3892.             NAME:"IA", NAME:<internet-address>
  3893.           ENDLIST
  3894.         NAME:"TRANSACTION", INTEGER:<transaction-number>
  3895.       ENDLIST
  3896.     NAME:"CMD",
  3897.       PROPLIST:
  3898.         NAME:"MAILBOX",
  3899.           PROPLIST:
  3900.             NAME:"MPM",
  3901.               PROPLIST:
  3902.                 NAME:"IA", INTEGER:<internet-address>
  3903.               ENDLIST
  3904.             NAME:"NET", NAME:<net>
  3905.             NAME:"HOST", NAME:<host>
  3906.             NAME:"PORT", NAME:<port>
  3907.             NAME:"USER", NAME:<user>
  3908.             NAME:"ORG", NAME:<organization>
  3909.             NAME:"CITY", NAME:<city>
  3910.             NAME:"STATE", NAME:<state>
  3911.             NAME:"COUNTRY", NAME:<country>
  3912.             NAME:"ZIP", NAME:<zip-code>
  3913.             NAME:"PHONE", NAME:<phone-number>
  3914.             <<other-items>>
  3915.           ENDLIST
  3916.         NAME:"OPERATION", NAME:"CANCEL"
  3917.         NAME:"REFERENCE",
  3918.           PROPLIST:
  3919.             NAME:"MPM",
  3920.               PROPLIST:
  3921.                 NAME:"IA", NAME:<internet-address>
  3922.               ENDLIST
  3923.             NAME:"TRANSACTION", INTEGER:<transaction-number>
  3924.           ENDLIST
  3925.         NAME:"TRACE",
  3926.           LIST:
  3927.             PROPLIST:
  3928.               NAME:"MPM",
  3929.                 PROPLIST:
  3930.                   NAME:"IA", INTEGER:<internet-address>
  3931.                 ENDLIST
  3932.               NAME:"DATE", NAME:<date>
  3933.  
  3934.  
  3935. [Page 64]                                                         Postel
  3936.  
  3937.  
  3938. August 1980                                                             
  3939.                                                Internet Message Protocol
  3940.  
  3941.  
  3942.  
  3943.               NAME:"ACTION", NAME:<action>
  3944.             ENDLIST
  3945.             ...
  3946.           ENDLIST
  3947.       ENDLIST
  3948.   ENDLIST
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.  
  3968.  
  3969.  
  3970.  
  3971.  
  3972.  
  3973.  
  3974.  
  3975.  
  3976.  
  3977.  
  3978.  
  3979.  
  3980.  
  3981.  
  3982.  
  3983.  
  3984.  
  3985.  
  3986.  
  3987.  
  3988.  
  3989.  
  3990.  
  3991.  
  3992.  
  3993. Postel                                                         [Page 65]
  3994.  
  3995.  
  3996.                                                              August 1980
  3997. Internet Message Protocol
  3998.  
  3999.  
  4000.  
  4001. 7.7.  Canceled Message
  4002.  
  4003.   PROPLIST:
  4004.     NAME:"ID",
  4005.       PROPLIST:
  4006.         NAME:"MPM",
  4007.           PROPLIST:
  4008.             NAME:"IA", NAME:<internet-address>
  4009.           ENDLIST
  4010.         NAME:"TRANSACTION", INTEGER:<transaction-number>
  4011.       ENDLIST
  4012.     NAME:"CMD",
  4013.       PROPLIST:
  4014.         NAME:"MAILBOX",
  4015.           PROPLIST:
  4016.             NAME:"MPM",
  4017.               PROPLIST:
  4018.                 NAME:"IA", INTEGER:<internet-address>
  4019.               ENDLIST
  4020.             NAME:"NET", NAME:<net>
  4021.             NAME:"HOST", NAME:<host>
  4022.             NAME:"PORT", NAME:<port>
  4023.             NAME:"USER", NAME:"*MPM*"
  4024.           ENDLIST
  4025.         NAME:"OPERATION", NAME:"CANCELED"
  4026.         NAME:"REFERENCE",
  4027.           PROPLIST:
  4028.             NAME:"MPM",
  4029.               PROPLIST:
  4030.                 NAME:"IA", NAME:<internet-address>
  4031.               ENDLIST
  4032.             NAME:"TRANSACTION", INTEGER:<transaction-number>
  4033.           ENDLIST
  4034.         NAME:"ADDRESS",
  4035.           PROPLIST:
  4036.             NAME:"MPM",
  4037.               PROPLIST:
  4038.                 NAME:"IA", INTEGER:<internet-address>
  4039.               ENDLIST
  4040.             NAME:"USER", NAME:<user>
  4041.           ENDLIST
  4042.         NAME:"ERROR-CLASS", INDEX:<error-class>
  4043.         NAME:"ERROR-STRING", NAME:<error-string>
  4044.         NAME:"TRAIL",
  4045.           LIST:
  4046.             PROPLIST:
  4047.               NAME:"MPM",
  4048.                 PROPLIST:
  4049.  
  4050.  
  4051. [Page 66]                                                         Postel
  4052.  
  4053.  
  4054. August 1980                                                             
  4055.                                                Internet Message Protocol
  4056.  
  4057.  
  4058.  
  4059.                   NAME:"IA", INTEGER:<internet-address>
  4060.                 ENDLIST
  4061.               NAME:"DATE", NAME:<date>
  4062.               NAME:"ACTION", NAME:<action>
  4063.             ENDLIST
  4064.             ...
  4065.           ENDLIST
  4066.         NAME:"TRACE",
  4067.           LIST:
  4068.             PROPLIST:
  4069.               NAME:"MPM",
  4070.                 PROPLIST:
  4071.                   NAME:"IA", INTEGER:<internet-address>
  4072.                 ENDLIST
  4073.               NAME:"DATE", NAME:<date>
  4074.               NAME:"ACTION", NAME:<action>
  4075.             ENDLIST
  4076.             ...
  4077.           ENDLIST
  4078.       ENDLIST
  4079.   ENDLIST
  4080.  
  4081.   
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.  
  4100.  
  4101.  
  4102.  
  4103.  
  4104.  
  4105.  
  4106.  
  4107.  
  4108.  
  4109. Postel                                                         [Page 67]
  4110.  
  4111.  
  4112.                                                              August 1980
  4113. Internet Message Protocol
  4114.  
  4115.  
  4116.  
  4117. 7.8.  Data Element Summary
  4118.  
  4119.   CODE   NAME      STRUCTURE                                LENGTH
  4120.   ----   ----      ---------                                ------
  4121.  
  4122.    0     NOP       CODE(1)                                   1
  4123.  
  4124.    1     PAD       CODE(1),COUNT(3),DATA(C)                  C+4
  4125.  
  4126.    2     BOOLEAN   CODE(1),TRUE-FALSE(1)                     2
  4127.  
  4128.    3     INDEX     CODE(1),INDEX(2)                          3
  4129.  
  4130.    4     INTEGER   CODE(1),INTEGER(4)                        5
  4131.  
  4132.    5     EPI       CODE(1),COUNT(3),INTEGER(C)               C+4
  4133.  
  4134.    6     BITSTR    CODE(1),COUNT(3),BITS(C/8)                C/8+4
  4135.  
  4136.    7     NAME      CODE(1),COUNT(1),NAME(C)                  C+2
  4137.  
  4138.    8     TEXT      CODE(1),COUNT(3),TEXT(C)                  C+4
  4139.  
  4140.    9     LIST      CODE(1),COUNT(3),ITEMS(2),DATA(C-2)       C+4
  4141.  
  4142.   10     PROPLIST  CODE(1),COUNT(3),PAIRS(1),DATA(C-1)       C+4
  4143.  
  4144.   11     ENDLIST   CODE(1)                                   1
  4145.  
  4146.   12     S-TAG     CODE(1),INDEX(2)                          3
  4147.  
  4148.   13     S-REF     CODE(1),INDEX(2)                          3
  4149.  
  4150.   14     ENCRYPT   CODE(1),COUNT(3),ALG-ID(1),
  4151.                                    KEY-ID(2),DATA(C-3)       C+4
  4152.  
  4153.   The numbers in parentheses are the number of octets in the field.
  4154.  
  4155.   
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.  
  4166.  
  4167. [Page 68]                                                         Postel
  4168.  
  4169.  
  4170. August 1980                                                             
  4171.                                                Internet Message Protocol
  4172.  
  4173.  
  4174.  
  4175.                                REFERENCES
  4176.  
  4177.  
  4178.  
  4179. [1]   Cerf, V., "The Catenet Model for Internetworking," Information
  4180.       Processing Techniques Office, Defense Advanced Research Projects
  4181.       Agency, IEN 48, July 1978.
  4182.  
  4183. [2]   Postel, J.,  "DOD Standard Internet Protocol," USC/Information
  4184.       Sciences Institute, IEN 128, NTIS number AD A079730, January 1980.
  4185.  
  4186. [3]   Postel, J.,  "DOD Standard Transmission Control Protocol,"
  4187.       USC/Information Sciences Institute, IEN 129, NTIS number AD
  4188.       A082609, January 1980.
  4189.  
  4190. [4]   Postel, J., "Assigned Numbers," RFC 762, USC/Information Sciences
  4191.       Institute, January 1980.
  4192.  
  4193. [5]   Feinler, E. and J. Postel, eds., "ARPANET Protocol Handbook,"
  4194.       NIC 7104, for the Defense Communications Agency by the Network
  4195.       Information Center of SRI International, Menlo Park, California,
  4196.       Revised January 1978.
  4197.  
  4198. [6]   Neigus, N., "File Transfer Protocol for the ARPA Network,"
  4199.       RFC 542, NIC 17759, SRI International, August 1973.
  4200.  
  4201. [7]   Bhushan, A., K. Progran, R. Tomlinson, and J. White,
  4202.       "Standardizing Network Mail Headers," RFC 561, NIC 18516,
  4203.       September 1973.
  4204.  
  4205. [8]   Myer, T., and D. Henderson, "Message Transmission Protocol,"
  4206.       RFC 680, NIC 32116, 30 April 1975.
  4207.  
  4208. [9]   Crocker, D., J. Vittal, K. Progran, and D. Henderson, "Standard
  4209.       for the Format of ARPA Network Text Messages," RFC 733, NIC 41952,
  4210.       21 November 1977.
  4211.  
  4212. [10]  Barber, D., and J. Laws, "A Basic Mail Scheme for EIN," INWG 192,
  4213.       February 1979.
  4214.  
  4215. [11]  Braaten, O., "Introduction to a Mail Protocol," Norwegian
  4216.       Computing Center, INWG 180, August 1978.
  4217.  
  4218. [12]  Crocker, D., E. Szurkowski, and D. Farber, "An Internetwork Memo
  4219.       Distribution Capability - MMDF," Sixth Data Communications
  4220.       Symposium, ACM/IEEE, November 1979.
  4221.  
  4222.  
  4223.  
  4224.  
  4225. Postel                                                         [Page 69]
  4226.  
  4227.  
  4228.                                                              August 1980
  4229. Internet Message Protocol
  4230. References
  4231.  
  4232.  
  4233.  
  4234. [13]  Haverty, J., D. Henderson, and D. Oestreicher, "Proposed
  4235.       Specification of an Inter-site Message Protocol," 8 July 1975.
  4236.  
  4237. [14]  Thomas, R., "Providing Mail Services for NSW Users," BBN NSW
  4238.       Working Note 24, Bolt Beranek and Newman, October 1978.
  4239.  
  4240. [15]  White, J., "A Proposed Mail Protocol," RFC 524, NIC 17140, SRI
  4241.       International, 13 June 1973.
  4242.  
  4243. [16]  White, J., "Description of a Multi-Host Journal," NIC 23144, SRI
  4244.       International, 30 May 1974.
  4245.  
  4246. [17]  White, J., "Journal Subscription Service," NIC 23143, SRI
  4247.       International, 28 May 1974.
  4248.  
  4249. [18]  Levin, R., and M. Schroeder, "Transport of Electronic Messages
  4250.       Through a Network," Teleinformatics 79, Boutmy & Danthine (eds.)
  4251.       North Holland Publishing Co., 1979.
  4252.  
  4253. [19]  Earnest, L., and J. McCarthy, "DIALNET: A Computer Communications
  4254.       Study," Computer Science Department, Stanford University, August
  4255.       1978.
  4256.  
  4257. [20]  Crispin M., "DIALNET: A Telephone Network Data Communications
  4258.       Protocol," DECUS Proceedings, Fall 1979.
  4259.  
  4260. [21]  Caulkins, D., "The Personal Computer Network (PCNET) Project: A
  4261.       Status Report," Dr. Dobbs Journal of Computer Calisthenics and
  4262.       Orthodontia,  v.5, n.6, June 1980.
  4263.  
  4264. [22]  Postel, J., "NSW Transaction Protocol (NSWTP)," USC/Information
  4265.       Sciences Institute, IEN 38, May 1978.
  4266.  
  4267. [23]  Haverty, J., "MSDTP -- Message Services Data Transmission
  4268.       Protocol," RFC 713, NIC 34739, April 1976.
  4269.  
  4270. [24]  Haverty, J., "Thoughts on Interactions in Distributed Services,"
  4271.       RFC 722, NIC 36806, 16 September 1976.
  4272.  
  4273. [25]  Postel, J., "A Structured Format for Transmission of Multi-Media
  4274.       Documents," RFC 767, USC/Information Sciences Institute,
  4275.       August 1980.
  4276.  
  4277. [26]  ISO-2014, "Writing of calendar dates in all-numeric form,"
  4278.       Recommendation 2014, International Organization for
  4279.       Standardization, 1975.
  4280.  
  4281.  
  4282.  
  4283. [Page 70]                                                         Postel
  4284.  
  4285.  
  4286. August 1980                                                             
  4287.                                                Internet Message Protocol
  4288.                                                               References
  4289.  
  4290.  
  4291.  
  4292. [27]  ISO-3307, "Information Interchange -- Representations of time of
  4293.       the day," Recommendation 3307, International Organization for
  4294.       Standardization, 1975.
  4295.  
  4296. [28]  ISO-4031, "Information Interchange -- Representation of local time
  4297.       differentials," Recommendation 4031, International Organization
  4298.       for Standardization, 1978.
  4299.  
  4300. [29]  CCITT-X.121, "International Numbering Plan for Public Data
  4301.       Networks," Recommendation X.121, CCITT, Geneva, 1978.
  4302.  
  4303. [30]  Postel, J.,  "NSW Data Representation (NSWB8)," USC/Information
  4304.       Sciences Institute, IEN 39, May 1978.
  4305.  
  4306. [31]  Cohen, D., "On Holy Wars and a Plea for Peace," IEN 137,
  4307.       USC/Information Sciences Institute, 1 April 1980.
  4308.  
  4309. [32]  Hofstadter, D., "Godel, Escher, Bach: An Eternal Golden Braid,"
  4310.       Basic Books, New York, 1979..
  4311.  
  4312. [33]  Harrenstien, K., "Field Addressing," ARPANET Message, SRI
  4313.       International, October 1977.
  4314.  
  4315. [34]  Postel, J., "Out-of-Net Host Address for Mail," RFC 754,
  4316.       USC/Information Sciences Institute, April 1979.
  4317.  
  4318. [35]  Shoch, J., "On Inter-Network Naming, Addressing, and Routing,"
  4319.       IEEE Computer Society, COMPCON, Fall 1978.
  4320.  
  4321. [36]  National Bureau of Standards, "Data Encryption Standard," Federal
  4322.       Information Processing Standards Publication 46, January 1977.
  4323.  
  4324. [37]  Diffie, W., and M. Hellman, "New Directions in Cryptology," IEEE
  4325.       Transactions on Information Theory, IT-22, 6, November 1976.
  4326.  
  4327. [38]  Rivest, R., A. Shamir, and L. Adleman,  "A Method for Obtaining
  4328.       Digital Signatures and Public-Key Cryptosystems"  Communications
  4329.       of the ACM, Vol. 21, Number 2, February 1978.
  4330.  
  4331. [39]  Merkle, R., and M. Hellman, "Hiding Information and Signatures in
  4332.       Trapdoor Knapsacks," IEEE Transactions of Information Theory,
  4333.       IT-24,5, September 1978.
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341. Postel                                                         [Page 71]
  4342.  
  4343.